主調(diào)函數(shù)使用被調(diào)函數(shù)的功能,稱為函數(shù)調(diào)用。在C語(yǔ)言中,只有在函數(shù)調(diào)用時(shí),函數(shù)體中定義的功能才會(huì)被執(zhí)行。C語(yǔ)言中,函數(shù)調(diào)用的一般形式為:
函數(shù)名(類型 形參,類型 形參...);
對(duì)無參函數(shù)調(diào)用時(shí)則無實(shí)際參數(shù)表。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù)、變量或其他構(gòu)造類型數(shù)據(jù)及表達(dá)式,各實(shí)參之間用逗號(hào)分隔。
在C語(yǔ)言中,可以用以下幾種方式調(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。
(2)函數(shù)語(yǔ)句:函數(shù)調(diào)用的一般形式加上分號(hào)即構(gòu)成函數(shù)語(yǔ)句,例如:
printf("%d",a); scanf("%d",&b);
都是以函數(shù)語(yǔ)句的方式調(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í)參*/
在主調(diào)函數(shù)中調(diào)用某函數(shù)之前應(yīng)對(duì)該被調(diào)函數(shù)進(jìn)行聲明,在主調(diào)函數(shù)中對(duì)被調(diào)函數(shù)進(jìn)行聲明的目的是使編譯系統(tǒng)知道被調(diào)函數(shù)返回值的類型,以便在主調(diào)函數(shù)中按此種類型對(duì)返回值進(jìn)行相應(yīng)的處理。其一般形式為:
類型說明符 被調(diào)函數(shù)名(類型 形參,類型 形參...);
需要注意的是,函數(shù)的聲明和函數(shù)的定義有本質(zhì)上的不同,主要區(qū)別在以下兩個(gè)方面:
(1)函數(shù)的定義是編寫一段程序,應(yīng)有函數(shù)的具體功能語(yǔ)句——函數(shù)體,而函數(shù)的聲明僅是向編譯系統(tǒng)的一個(gè)說明,不含具體的執(zhí)行動(dòng)作。
(2)在程序中,函數(shù)的定義只能有一次,而函數(shù)的聲明可以有多次。
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程