函數(shù)調(diào)用的一般形式前面已經(jīng)說過,在程序中是通過對(duì)函數(shù)的調(diào)用來執(zhí)行函數(shù)體的,其過程與其它語言的子程序調(diào)用相似。C語言中, 函數(shù)調(diào)用的一般形式為:
函數(shù)名(實(shí)際參數(shù)表) 對(duì)無參函數(shù)調(diào)用時(shí)則無實(shí)際參數(shù)表。 實(shí)際參數(shù)表中的參數(shù)可以是常數(shù),變量或其它構(gòu)造類型數(shù)據(jù)及表達(dá)式。 各實(shí)參之間用逗號(hào)分隔。'Next of Page在C語言中,可以用以下幾種方式調(diào)用函數(shù):
1.函數(shù)表達(dá)式
函數(shù)作表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。例如: z=max(x,y)是一個(gè)賦值表達(dá)式,把max的返回值賦予變量z。'Next of Page
2.函數(shù)語句
函數(shù)調(diào)用的一般形式加上分號(hào)即構(gòu)成函數(shù)語句。例如: printf ("%D",a);scanf ("%d",&b);都是以函數(shù)語句的方式調(diào)用函數(shù)。
3.函數(shù)實(shí)參
函數(shù)作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn)。 這種情況是把該函數(shù)的返回值作為實(shí)參進(jìn)行傳送,因此要求該函數(shù)必須是有返回值的。例如: printf("%d",max(x,y)); 即是把max調(diào)用的返回值又作為printf函數(shù)的實(shí)參來使用的。在函數(shù)調(diào)用中還應(yīng)該注意的一個(gè)問題是求值順序的問題。 所謂求值順序是指對(duì)實(shí)參表中各量是自左至右使用呢,還是自右至左使用。 對(duì)此, 各系統(tǒng)的規(guī)定不一定相同。在3.1.3節(jié)介紹printf 函數(shù)時(shí)已提
到過,這里從函數(shù)調(diào)用的角度再?gòu)?qiáng)調(diào)一下。 看例5.2程序。
void main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}
如按照從右至左的順序求值。例5.2的運(yùn)行結(jié)果應(yīng)為:
8
7
7
8
如對(duì)printf語句中的++i,--i,i++,i--從左至右求值,結(jié)果應(yīng)為:
9
8
8
9
應(yīng)特別注意的是,無論是從左至右求值, 還是自右至左求值,其輸出順序都是不變的, 即輸出順序總是和實(shí)參表中實(shí)參的順序相同。由于Turbo C現(xiàn)定是自右至左求值,所以結(jié)果為8,7,7,8。上述問題如還不理解,上機(jī)一試就明白了。
相關(guān)推薦:計(jì)算機(jī)等考二級(jí)C語言備考:C語言/C++編譯過程北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |