在調(diào)用的函數(shù)前定義函數(shù),此時(shí)可以不需要聲明。
創(chuàng)新新互聯(lián),憑借十年的成都網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗(yàn),本著真心·誠(chéng)心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有上千案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)。
2.在調(diào)用的函數(shù)前聲明。
3.在調(diào)用的函數(shù)里面也可以聲明。
4.在其他文件的頭文件*.h文件里面聲明,然后*.c文件直接調(diào)用頭文件也可以。
把子函數(shù)放主函數(shù)MAIN函數(shù)外并且是之前定義,無(wú)需聲明。
2.如果你把子函數(shù)放到MAIN函數(shù)外,則必須在定義的時(shí)候先聲明。
3.如果把 子函數(shù)放在MAIN函數(shù)中就不需要提前聲明了。
4.聲明一般告訴編譯器有這個(gè)對(duì)象??蛇@個(gè)'有'字就有2層意思,第一層意思是這個(gè)對(duì)象在其他地方已經(jīng)定義過(guò),比如用extern來(lái)聲明就有這個(gè)意思,因?yàn)檫@個(gè)對(duì)象已經(jīng)有了這個(gè)時(shí)候不會(huì)對(duì)它分配內(nèi)存。第二層含義就是這個(gè)對(duì)象以前沒(méi)有是我現(xiàn)在定義的(現(xiàn)在有了以前沒(méi)有)這個(gè)時(shí)候聲明又可以稱(chēng)為定義他們是重疊的,這個(gè)時(shí)候給這個(gè)對(duì)象分配內(nèi)存。所以可以看出在有定義的地方一定有聲明,有聲明的地方不一定就有定義。定義也是聲明,這是很多人都不了解的地方
先頂一下樓上的,厲害~~~~~~~~~~
這對(duì)代碼沒(méi)有一個(gè)有用的。其實(shí)在頭文件中只有函數(shù)的聲明而沒(méi)有函數(shù)的定義。這個(gè)頭文件是給程序員看的,好讓你知道有這些函數(shù)。那真正的函數(shù)定義在那呢?其實(shí)庫(kù)文件中的函數(shù)早就已經(jīng)編譯好了存在.obj或者是.lib的文件里面。這種是靜態(tài)的連接模式。在你的程序便已完成以后連接器再將你的程序的.obj文件和庫(kù)文件進(jìn)行連接最后生成.exe文件。如果你想看庫(kù)文件的定義的話(huà)只能去網(wǎng)上自己找找啦。不過(guò)我個(gè)人感覺(jué)沒(méi)有這個(gè)必要。其實(shí)大部分的庫(kù)文件都是能夠自己編寫(xiě)的。像strcmp()這種微軟的庫(kù)文件是更不可能放出原碼的,不過(guò)可以去msdn里面碰碰運(yùn)氣。最后祝你好運(yùn)啦。
可以放在后面,如果放到main后面,則在要前面進(jìn)行函數(shù)聲明,比如,以下代碼塊:
#include stdio.h
int myfun(int n); //此為函數(shù)聲明
int main(void)
{
...... //此為省略代碼
}
int myfun(int n) //此為函數(shù)定義
{
return n*n;
}
可以放在main()函數(shù)后面,需要在mian()函數(shù)前面做個(gè)函數(shù)申明。
在一個(gè)源文件中定義函數(shù)且在另一個(gè)文件中調(diào)用函數(shù)時(shí),函數(shù)聲明是必需的。在這種情況下,應(yīng)該在調(diào)用函數(shù)的文件頂部聲明函數(shù)。如:
#include stdio.h
/* 函數(shù)聲明 */
int max(int num1, int num2);
int main (){......
函數(shù)聲明會(huì)告訴編譯器函數(shù)名稱(chēng)及如何調(diào)用函數(shù)。函數(shù)的實(shí)際主體可以單獨(dú)定義。
函數(shù)聲明包括以下幾個(gè)部分:
return_type function_name( parameter list );
擴(kuò)展資料:
C語(yǔ)言書(shū)寫(xiě)規(guī)則:
1、一個(gè)說(shuō)明或一個(gè)語(yǔ)句占一行。
2、用{} 括起來(lái)的部分,通常表示了程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語(yǔ)句的第一個(gè)字母對(duì)齊,并單獨(dú)占一行。
3、低一層次的語(yǔ)句或說(shuō)明可比高一層次的語(yǔ)句或說(shuō)明縮進(jìn)若干格后書(shū)寫(xiě)。以便看起來(lái)更加清晰,增加程序的可讀性。在編程時(shí)應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。
參考資料:
百度百科-函數(shù)
C語(yǔ)言中main函數(shù)可以在任意位置。?
每一個(gè)C語(yǔ)言程序有且只有一個(gè)主函數(shù)(main()),且程序必須從main()函數(shù)開(kāi)始,它是程序開(kāi)始時(shí)調(diào)用的第一個(gè)函數(shù)。函數(shù)定義形式:【int main(void){}】。
C語(yǔ)言規(guī)定,在一個(gè)C程序中,main()函數(shù)可以在任意位置。
解析:
每個(gè)C程序有且只有一個(gè)主函數(shù)(main),且程序必須從main()函數(shù)開(kāi)始執(zhí)行,而且main()函數(shù)可以放在程序中的任意位置。
詳細(xì)介紹:
在宿主環(huán)境中編譯的C程序必須定義一個(gè)名為main的函數(shù),這是程序開(kāi)始時(shí)調(diào)用的第一個(gè)函數(shù)。
main()函數(shù)的定義有以下兩種形式:
(1)函數(shù)沒(méi)有參數(shù),返回值為int類(lèi)型。int main( void ) { /*…*/ }.
(2)函數(shù)有兩個(gè)參數(shù),類(lèi)型分別是int和char**,返回值是int類(lèi)型。int main( int argc, char *argv ) { /*…*/ }.
這兩種定義方式都符合C語(yǔ)言標(biāo)準(zhǔn)。除此之外,許多C的實(shí)現(xiàn)版本還支持第三種、非標(biāo)準(zhǔn)語(yǔ)法的定義方式:int main( int argc, char *argv, char *envp ) { /*…*/ }.
函數(shù)返回值是int,有3個(gè)參數(shù):第一個(gè)是int,另外兩個(gè)是char**。
放在后面,要先聲明下原型,這樣編譯器在編譯時(shí),就可以知道有這個(gè)函數(shù),會(huì)往下面查找,并編譯。
放在前面,可以直接定義,main中使用。
放前放后,純屬個(gè)人編寫(xiě)風(fēng)格,并無(wú)硬性規(guī)定。
個(gè)人喜歡放在前面,這樣,看代碼時(shí),直接從下面的MAIN函數(shù)看起,遇到定義的函數(shù),上翻查看。