如果一個(gè)函數(shù)要使用參數(shù),它就必須定義接受參數(shù)值的變量。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了臺(tái)山免費(fèi)建站歡迎大家使用!
形式參數(shù)與實(shí)際參數(shù)
函數(shù)定義時(shí)填入的參數(shù)我們稱之為形式參數(shù),簡(jiǎn)稱形參,它們同函數(shù)內(nèi)部的局部變量作用相同。形參的定義是在函數(shù)名之后和函數(shù)開始的花括號(hào)之前。
調(diào)用時(shí)填入的參數(shù),我們稱之為實(shí)際參數(shù),簡(jiǎn)稱實(shí)參。
必須確認(rèn)所定義的形參與調(diào)用函數(shù)的實(shí)際參數(shù)類型一致,同時(shí)還要保證在調(diào)用時(shí)形參與實(shí)參的個(gè)數(shù)出現(xiàn)的次序也要一一對(duì)應(yīng)。如果不一致,將產(chǎn)生意料不到的結(jié)果。與許多其它高級(jí)語言不同,(是健壯的,它總要做一些甚至你不希望的事情,幾乎沒有運(yùn)行時(shí)錯(cuò)誤檢查,完
全沒有范圍檢測(cè)。作為程序員,必須小心行事以保證不發(fā)生錯(cuò)誤,安全運(yùn)行。
賦值調(diào)用與引用調(diào)用
一般說來,有兩種方法可以把參數(shù)傳遞給函數(shù)。第一種叫做“賦值調(diào)用”(call
by
value),這種方法是把參數(shù)的值復(fù)制到函數(shù)的形式參數(shù)中。這樣,函數(shù)中的形式參數(shù)的任何變化不會(huì)影響到調(diào)用時(shí)所使用的變量。
把參數(shù)傳遞給函數(shù)的第二種方法是“引用調(diào)用”(call
by
reference)。這種方法是把參數(shù)的地址復(fù)制給形式參數(shù),在函數(shù)中,這個(gè)地址用來訪問調(diào)用中所使用的實(shí)際參數(shù)。這意味著,形式參數(shù)的變化會(huì)影響調(diào)用時(shí)所使用的那個(gè)變量
關(guān)于c語言中函數(shù)調(diào)用問題解答如下:
首先如果是編譯的這個(gè)代碼那這個(gè)函數(shù)肯定被調(diào)用了,讓你覺得沒有調(diào)用是因?yàn)閣hile循環(huán)沒有被執(zhí)行。
圖中紅色框內(nèi)代碼p1和p2經(jīng)過賦值p1是肯定大于p2所以不滿足while.的條件直接退出了函數(shù)。
你需要看看要實(shí)現(xiàn)啥在改一下。
A是先取函數(shù)f返回的內(nèi)存單元(參數(shù)是i即i的地址)中存儲(chǔ)的值,并作更改(改為6)
B項(xiàng) i+6 是算術(shù)表達(dá)式,不能直接取地址,必須使用變量保存才能取地址
C項(xiàng) 是定義一個(gè)指向整型的指針p,并賦值為函數(shù)f的返回值(該函數(shù)返回一個(gè)指針,也就是內(nèi)存地址)
D項(xiàng) 直接以i為參數(shù)執(zhí)行函數(shù)f,返回值不起任何作用
有兩種情況,第一種:在大部分情況下都是要用到多少個(gè)參數(shù)就定義多少個(gè).請(qǐng)看例子:
#include?stdio.h
void?weekdays(int?y,int?m,?int?d)//根據(jù)日期利用基姆拉爾森公式判定是星期幾
//看參數(shù):一共三個(gè),主程序中調(diào)用時(shí),也必須用三個(gè)參數(shù)
{
int?iWeek;
if(m==1||m==2)?{
m+=12;
y--;
}
iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;//基姆拉爾森公式
switch(iWeek)//判定星期幾
{
case?0:?printf("星期一\n");?break;
case?1:?printf("星期二\n");?break;
case?2:?printf("星期三\n");?break;
case?3:?printf("星期四\n");?break;
case?4:?printf("星期五\n");?break;
case?5:?printf("星期六\n");?break;
case?6:?printf("星期日\n");?break;
}
}?
int??main()
{
int?year=0,month=0,day=13;???
printf("請(qǐng)輸入日期:\n格式為:1900,1,1\n");???
scanf("%d%d%d",year,month,day);//輸入年,月,日
weekdays(year,month,day);???//運(yùn)算
return?0;
}
第二種:不定參數(shù)這個(gè)有點(diǎn)復(fù)雜,還是建議你自行度娘了.這種情況,函數(shù)頭定義參數(shù)個(gè)數(shù)可以比主函數(shù)實(shí)際調(diào)用時(shí)少.