比如 a 函數(shù)中要調(diào)用 b 函數(shù),b 函數(shù)又要調(diào)用 a 函數(shù)(這很常見)。因?yàn)?C 語言對(duì)函數(shù)的順序是有要求的,寫在后面的函數(shù)才能調(diào)用前面的函數(shù)。這樣一來,無論是 a 在前面還是 b 在前面都無法實(shí)現(xiàn),所以就可以先單獨(dú)聲明 a 和 b,然后在后面再具體實(shí)現(xiàn) a 和 b。
創(chuàng)新互聯(lián)-云計(jì)算及IDC服務(wù)提供商,涵蓋公有云、IDC機(jī)房租用、南充服務(wù)器托管、等保安全、私有云建設(shè)等企業(yè)級(jí)互聯(lián)網(wǎng)基礎(chǔ)服務(wù),歡迎聯(lián)系:18982081108
舉個(gè)例子來說明吧
void foo();
int main()
{
foo();
}
void foo()
{
;
}
以上代碼中,第一句就是所謂函數(shù)聲明。
其實(shí)直接用函數(shù)定義也就是void foo(){;}替代第一句也是可以的,不過函數(shù)的聲明讓你可以在定義它的代碼段之前使用它。
比如以上的例子中,在編譯進(jìn)行到main函數(shù)中的foo調(diào)用的時(shí)候,foo函數(shù)還是沒有定義的,但我們通過foo的聲明告訴了編譯器:foo是一個(gè)函數(shù)的名字,這個(gè)函數(shù)有著怎樣怎樣的參數(shù)表等等。
“函數(shù)定義”是指對(duì)函數(shù)功能的確立,包括指定函數(shù)名,函數(shù)值類型、形參類型、函數(shù)體等,它是一個(gè)完整的、獨(dú)立的函數(shù)單位。
而“函數(shù)聲明”的作用則是把函數(shù)的名字、函數(shù)類型以及形參類型、個(gè)數(shù)和順序通知編譯系統(tǒng),以便在調(diào)用該函數(shù)時(shí)系統(tǒng)按此進(jìn)行對(duì)照檢查(例如函數(shù)名是否正確,實(shí)參與形參的類型和個(gè)數(shù)是否一致)。
在書寫形式上,函數(shù)聲明可以把復(fù)數(shù)頭部復(fù)制過來,在后面加一個(gè)分號(hào);而且在參數(shù)表中可以只寫各個(gè)參數(shù)的類型名,而不必寫參數(shù)名。
C語言不同于Java語言,在Java語言中,在一個(gè)類中,定義函數(shù)/方法后,在調(diào)用時(shí)不需要聲明。在C語言中定義函數(shù)后,在使用前,需要在main函數(shù)前進(jìn)行聲明,否則會(huì)報(bào)錯(cuò)。
或者將函數(shù)定義在main函數(shù)的前面,則不需要聲明
注意:在其他函數(shù)中調(diào)用自定義的函數(shù)時(shí),也是要在調(diào)用者前進(jìn)行聲明,或者定義在調(diào)用者前,否則會(huì)報(bào)錯(cuò)無法使用
#includestdio.h
int getMax(int a, int b) {
if (a b) {
return a;
}
else {
return b;
}
}
void main() {
int t=getMax(12, 21);
printf("%d\n", t);
getchar();
}
擴(kuò)展資料:
關(guān)于函數(shù)的概念我們可以這樣理解,函數(shù)是一個(gè)功能的集合,它可以根據(jù)輸入完成特寫的功能,并將結(jié)果輸出。當(dāng)然有時(shí)候函數(shù)只是為了實(shí)現(xiàn)一些特寫功能而并不一定要有輸入或輸入。
我們想要自己編寫一個(gè)函數(shù)需要編寫兩部分內(nèi)容:聲明和定義。函數(shù)的聲明就是告訴編譯器我們想要定義一個(gè)函數(shù),并明確規(guī)定其返回值(輸出)、函數(shù)名、參數(shù)表(輸入)。聲明函數(shù)的語法如下:
type function_name(type var);
什么是聲明:有兩重含義,如下:
第一重含義:告訴編譯器,這個(gè)名字已經(jīng)匹配到一塊內(nèi)存上了(伊人已嫁,吾將何去何
從?何以解憂,唯有稀粥),下面的代碼用到變量或?qū)ο笫窃趧e的地方定義的.聲明可以出
現(xiàn)多次.
第二重含義:告訴編譯器,我這個(gè)名字我先預(yù)定了,別的地方再也不能用它來作為變量
名或?qū)ο竺?比如你在圖書館自習(xí)室的某個(gè)座位上放了一本書,表明這個(gè)座位已經(jīng)有人預(yù)
訂,別人再也不允許使用這個(gè)座位.其實(shí)這個(gè)時(shí)候你本人并沒有坐在這個(gè)座位上.這種聲
明最典型的例子就是函數(shù)參數(shù)的聲明,例如:
void fun(int i, char c);好,這樣一解釋,我們可以很清楚的判斷:a)是定義;b)是聲明.