函數(shù)可以在調用函數(shù)的函數(shù)(比如main函數(shù))之前定義,這樣就無需聲明了;
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設,古丈企業(yè)網(wǎng)站建設,古丈品牌網(wǎng)站建設,網(wǎng)站定制,古丈網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,古丈網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
舉例:
int?add(int?x,int?y)?{?return?x+y;?}?//在編譯程序編譯到main的調用add之處時,由于已經(jīng)編譯過add的函數(shù)了,因此編譯程序已經(jīng)知曉調用規(guī)則,因此可以省略聲明語句
void?main()?{?int?x=5,y=6,c;?c=add(x,y);?printf("%d\n",c);?}
如果函數(shù)在調用函數(shù)的函數(shù)之后定義,為了通知編譯程序要調用函數(shù)的格式,需要在調用函數(shù)的函數(shù)前添加函數(shù)的聲明。
舉例:
int?add(int?x,int?y);?//函數(shù)聲明也可以簡單地寫成int?add(int,int);通知編譯程序main中調用add的規(guī)則即可
void?main()?{?int?x=5,y=6,c;?c=add(x,y);?printf("%d\n",c);?}
int?add(int?x,int?y)?{?return?x+y;?}
函數(shù)聲明是讓代碼調用點知道按照什么格式來調用函數(shù)。
(函數(shù)參數(shù)列表是什么,返回值是什么。)
否則調用點無法確知調用函數(shù)的格式。
(注:在C里也可以無函數(shù)聲明就調用,那樣會在程序鏈接的時候做調用匹配檢查。但這非常非常不推薦這樣做。
C++則完全屏蔽這種可能,如果出現(xiàn)未聲明的調用,則直接編譯報錯。)
這個程序可以這樣分析,其實很簡單,首先你要添加上去#include
這個頭文件,其次你就這樣記憶:要是main()函數(shù)在被調用函數(shù)的前面,也就是像你所說的這樣情況的話,就必須在main()函數(shù)前面對被調用函數(shù)進行聲明才可以正常調用函數(shù),不然編譯會出錯的,
如果被調用函數(shù)出現(xiàn)在在了main()函數(shù)的上面,也就是mian()函數(shù)和你現(xiàn)在max函數(shù)位置調換一下,那么就不必對被調用函數(shù)進行聲明了,直接調用就可以了。
這樣的記憶比較清晰一點,我平時編程是將主函數(shù)寫在最后,前面寫被調用函數(shù),這樣就避免了忘記寫函數(shù)聲明而編譯出錯,希望我的解答能夠幫助到你,
定義函數(shù)
C 語言中的函數(shù)定義的一般形式如下:
return_type function_name( parameter list )
{
body of the function
}
在 C 語言中,函數(shù)由一個函數(shù)頭和一個函數(shù)主體組成。下面列出一個函數(shù)的所有組成部分:
返回類型:一個函數(shù)可以返回一個值。return_type 是函數(shù)返回的值的數(shù)據(jù)類型。有些函數(shù)執(zhí)行所需的操作而不返回值,在這種情況下,return_type 是關鍵字 void。
函數(shù)名稱:這是函數(shù)的實際名稱。函數(shù)名和參數(shù)列表一起構成了函數(shù)簽名。
參數(shù):參數(shù)就像是占位符。當函數(shù)被調用時,您向參數(shù)傳遞一個值,這個值被稱為實際參數(shù)。參數(shù)列表包括函數(shù)參數(shù)的類型、順序、數(shù)量。參數(shù)是可選的,也就是說,函數(shù)可能不包含參數(shù)。
函數(shù)主體:函數(shù)主體包含一組定義函數(shù)執(zhí)行任務的語句。
在C語言中,編譯一個C語言源文件是從第一行開始掃描到最后的,你調用一個函數(shù),之前必須定義或申明過這個函數(shù)。
這樣是合法的:
void f(){
}
int main(){
f();
}
這樣也是合法的
void f();
int main(){
f();
}
void f(){
}
這樣就是非法的
int main(){
f();
}
void f(){
}
所以函數(shù)調用不一定需要先聲明,當函數(shù)定義調用函數(shù)之后需才要先申明。