一、函數(shù)的參數(shù)
前面已經(jīng)介紹過,函數(shù)的參數(shù)分為形參和實參兩種。 在本小節(jié)中,進(jìn)一步介紹形參、實參的特點和兩者的關(guān)系。 形參出現(xiàn)在函數(shù)定義中,在整個函數(shù)體內(nèi)都可以使用, 離開該函數(shù)則不能使用。實參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實參變量也不能使用。 形參和實參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調(diào)用時, 主調(diào)函數(shù)把實參的值傳送給被調(diào)函數(shù)的形參從而實現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。
函數(shù)的形參和實參具有以下特點:
1.形參變量只有在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時, 即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。 函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。
2.實參可以是常量、變量、表達(dá)式、函數(shù)等, 無論實參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應(yīng)預(yù)先用賦值,輸入等辦法使實參獲得確定值。
3.實參和形參在數(shù)量上,類型上,順序上應(yīng)嚴(yán)格一致, 否則會發(fā)生“類型不匹配”的錯誤。
4.函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。 即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化。例5.3可以說明這個問題。
void main()
{
int n;
printf("input number\n");
scanf("%d",&n);
s(n);
printf("n=%d\n",n);
}
int s(int n)
{
int i;
for(i=n-1;i>=1;i--)
n=n+i;
printf("n=%d\n",n);
}
本程序中定義了一個函數(shù)s,該函數(shù)的功能是求∑ni=1i 的值。在主函數(shù)中輸入n值,并作為實參,在調(diào)用時傳送給s 函數(shù)的形參量n( 注意,本例的形參變量和實參變量的標(biāo)識符都為n,但這是兩個不同的量,各自的作用域不同)。 在主函數(shù)中用printf 語句輸出一次n值,這個n值是實參n的值。在函數(shù)s中也用printf 語句輸出了一次n值,這個n值是形參最后取得的n值0。從運行情況看,輸入n值為100。即實參n的值為100。把此值傳給函數(shù)s時,形參 n 的初值也為100,在執(zhí)行函數(shù)過程中,形參n的值變?yōu)?050。返回主函數(shù)之后,輸出實參n的值仍為100.可見實參的值不隨形參的變化而變化。
相關(guān)推薦:
2012年軟考系統(tǒng)分析師考試60天完美復(fù)習(xí)計劃
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |