當前位置:首頁 » 編程語言 » c語言怎麼調用兩個參數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言怎麼調用兩個參數

發布時間: 2022-05-04 22:48:05

c語言如何定義一個可變參數函數 如何調用其輸入的參數 分別

有專門的宏,處理可變參

void va_start( va_list arg_ptr, prev_param );

type va_arg( va_list arg_ptr, type );

void va_end( va_list arg_ptr );

一個簡單的例子

voidsimple_va_fun(inti,...)
{
va_listarg_ptr;
intj=0;

va_start(arg_ptr,i);
j=va_arg(arg_ptr,int);
va_end(arg_ptr);
printf("i=%dj=%dn",i,j);
return;
}
intmain()
{
simple_va_fun(1);
simple_va_fun(1,2);
simple_va_fun(1,200);
return0;
}

Ⅱ c語言中調用函數如何返回多個值

1、通過使用指針,在函數調用時,傳遞帶有地址的參數,並使用指針更改其值;這樣,修改後的值就會變成原始參數。

Ⅲ 怎樣用函數調用交換兩個數的值 c語言

#include
<stdio.h>
void
change(int
*a,int
*b){
int
m;
//定義一個臨時變數
m
=
*a;
//把a指向的值放到m中
*a
=
*b;
//把b指向的值放到a指向的內存中
*b
=
m;
//把m中的值放到b指向的空間中,函數調用結束時m的生成周期也完了,就釋放掉了
}
int
main(){
int
i
=
1;
int
j
=
2;
change(&i
,&j);
//函數調用
printf("%d,%d\n",i,j);
return
0;
}

Ⅳ 關於C語言中變數在兩個.C文件中的調用問題

我有幾個方案,我經常在VC下使用,都沒問題,你試試:

方案1:在一個文件中定義全局變數「類型 tmp;」,注意是全局變數。另一個文件全局變數的位置使用「extend 類型 tmp;」。

方案2:把hal.c文件里的函數參數加一個指向tmp的指針,tmp在main中,在hal.c里的文件使用tmp時,把地址傳過去就行了。
例如:
mian()
{
char tmp;
.....
.....
}
function(&tmp;...;...);
...
}
在hal.c裡面
function(char *tmp;...;...)
{
....
}
這樣就行了

方案1、2都不用hal.h

方案3:你把hal.c的子函數寫進hal.h,在mian函數之前include一下就行了。
但不推薦此方法。

對你出現的問題的理解:
你在hal.h中聲明了tmp,在兩個文件里都包含它,表示包含了兩次,C語言規定如果沒有限定為局部變數,則各個文件都可以調用,這就導致你聲明了兩個名稱相同的同類型變數,當然不行。
如果定義為局部變數,那麼另一個文件就沒辦法用它了,或者這么說:兩個文件各有一個tmp但不是同一個tmp,改變一個的值,另一個不變。
常用方法就是extend一下(方案1)。

順便說一句,我從來沒用過unsigned char類型,因為char類型本身就是非負的,可能是因為編譯器的關系吧

Ⅳ 這個c語言的主函數的兩個參數怎麼加進去啊

argc代表參數數量,後面的數組代表參數

我們經常用的main函數都是不帶參數的。因此main 後的括弧都是空括弧。實際上,main函數可以帶參數,這個參數可以認為是 main函數的形式參數。C語言規定main函數的參數只能有兩個, 習慣上這兩個參數寫為argc和argv。因此,main函數的函數頭可寫為: main (argc,argv)C語言還規定argc(第一個形參)必須是整型變數,argv( 第二個形參)必須是指向字元串的指針數組。加上形參說明後,main函數的函數頭應寫為: main (argc,argv) int argv; char *argv[]; 或寫成: main (int argc,char *argv[])

由於main函數不能被其它函數調用, 因此不可能在程序內部取得實際值。那麼,在何處把實參值賦予main函數的形參呢? 實際上,main函數的參數值是從操作系統命令行上獲得的。當我們要運行一個可執行文件時,在DOS提示符下鍵入文件名,再輸入實際參數即可把這些實參傳送到main的形參中去。 DOS提示符下命令行的一般形式為:

C:/>可執行文件名 參數 參數……;

但是應該特別注意的是,main 的兩個形參和命令行中的參數在位置上不是一一對應的。因為,main的形參只有二個,而命令行中的參數個數原則上未加限制。argc參數表示了命令行中參數的個數(注意:文件名本身也算一個參數),argc的值是在輸入命令行時由系統按實際參數的個數自動賦予的。例如有命令行為:

C:/>E6 24 BASIC dbase FORTRAN ,由於文件名E6 24本身也算一個參數,所以共有4個參數,因此argc取得的值為4。argv參數是字元串指針數組,其各元素值為命令行中各字元串(參數均按字元串處理)的首地址。 指針數組的長度即為參數個數。數組元素初值由系統自動賦予。

main(int argc,char *argv[]){

while(argc-->1) printf("%s/n",*++argv);

}

本例是顯示命令行中輸入的參數。如果上例的可執行文件名為e24.exe,存放在A驅動器的盤內。因此輸入的命令行為:

C:/>a:e24 BASIC dBASE FORTRAN 則運行結果為:

BASIC

dBASE

FORTRAN

該行共有4個參數,執行main時,argc的初值即為4。argv的4個元素分為4個字元串的首地址。執行while語句,每循環一次 argv值減1,當argv等於1時停止循環,共循環三次, 因此共可輸出三個參數。在printf函數中,由於列印項*++argv是先加1再列印, 故第一次列印的是argv[1]所指的字元串BASIC。第二、 三次循環分別列印後二個字元串。而參數e24是文件名,不必輸出

Ⅵ 子函數中得出的兩個變數如何被主函數調用(C語言)

需要從函數中返回多於1個變數值時,最常用、也較簡單的辦法是在主調函數中聲明變數,把變數的地址傳給被調函數,在被調函數中通過指針直接操作主調函數中的變數。如此題中在主調函數中聲明x和y,把x和y的地址(指針)傳給被調函數。舉例如下:

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
voidf(int*x,int*y){
*x=10;
*y=34;
}
intmain(void){
intx,y;
f(&x,&y);
printf("x=%d y=%d ",x,y);
return0;
}

Ⅶ c語言:調用函數,交換兩個變數的值。

這個無法交換數據。
C語言函數參數的基本規則是值傳遞,所以傳遞時只能實現實參向形參的單向的、值的傳遞。這就是為什麼需要使用指針才能實現值交換的原因。

Ⅷ C語言 帶參數函數的引用調用

#include <stdio.h>

void fun(int * a,int k);

void main()
{
int a[10];
printf("請輸入10個整數:\n");
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
fun(a,sizeof(a)/sizeof(a[0]));
}

void fun(int a[],int k)//這就是你想要的函數
{
int g0=0,t0=0,e0=0;/*g0就是>0,t0就是小於0,e0就等0*/
for(int i=0;i<k;i++)
{
if(a[i]>0) g0++;
if(a[i]==0) e0++;
if(a[i]<0) t0++;
}
printf("大於0的個數為:%d\n",g0);
printf("小於0的個數為:%d\n",t0);
printf("等於0的個數為:%d\n",e0);
}
/*
說明就和ichenq的差不多,只是ichenq的那個有問題,比如他的if語句里多了幾個";"號,導致無沒通過,另外我用他的函數來測試得不到想要的結果
sizeof(a)/sizeof(a[0])就是數組a的長度*/

Ⅸ c語言 編一程序 交換兩個變數的值(用指針做函數參數)

#include <stdio.h>

void Swap(int a,int b)

{

int tmp = a;

a = b;

b = tmp;

printf("a=%d,b=%d ",a,b);

}

int main()

{

int a = 5;

int b = 10;

printf("a=%d,b=%d ",a,b);

Swap(a,b);

printf("a=%d,b=%d ",a,b);

return 0;

}

(9)c語言怎麼調用兩個參數擴展閱讀:

形參和實參的特點

1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。

2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。

3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。

4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。

網路-形參

Ⅹ C語言 如果調用兩個函數 就是返回兩個值

如果使用 return 語句的話,那麼一次函數調用就只能返回一個值;如果想一次函數調用操作就能夠返回兩個值的話,那麼就只能夠通過傳遞指針變數實現。例如下程序:

void mysubcall(int *, char *) ;
void main( )
{
int num = 10 ;
char mystr[20]=「1234567890」;
mysubcall(&num,mystr);
printf(「%d %s\n」,num,mystr);
}
void mysubcall(int * num, char mystr[20])
{
(*num)+=40;
mystr[5]+=5;
}
該子函數返回的就是兩個值:改變後的數字、以及改變後的字元串。