因?yàn)槌绦蛟诰幾g的時(shí)候是自上而下掃描文件的,函數(shù)在調(diào)用以前必須有函數(shù)原型,編譯器才知道怎么編譯。對(duì)于主函數(shù)中調(diào)用的函數(shù),如果在在主函數(shù)前定義或者聲明原型,則編譯器就知道如何調(diào)用了。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比解放網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式解放網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋解放地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
不需要啊。只要函數(shù)的定義在調(diào)用之前就不用聲明。
若函數(shù)定義在調(diào)用點(diǎn)之前,可以不另外聲明,這句話是正確的。
最好先加上原型聲明,然后再定義,或者是使用該函數(shù)。
由于程序是順序執(zhí)行,如果沒(méi)有提前聲明,程序會(huì)找不到函數(shù),于是報(bào)錯(cuò)。聲明的主要作用是告訴程序我下面要用到這個(gè)函數(shù),程序會(huì)去找這個(gè)函數(shù)的定義,然后調(diào)用。
接著是函數(shù)聲明,大家都知道,C語(yǔ)言是有一個(gè)主函數(shù)main()和0或n個(gè)普通函數(shù)組成的。由于當(dāng)代碼越長(zhǎng),用到的函數(shù)就越多,為了減少函數(shù)的混淆,所以要有個(gè)函數(shù)名,就像老師點(diǎn)名一樣,聲明一個(gè)函數(shù),就如點(diǎn)一個(gè)學(xué)生的名字。
1。函數(shù)的聲明,就是聲明函數(shù)的原型。即函數(shù)的調(diào)用方式。是函數(shù)頭,不包括函數(shù)體!2。函數(shù)定義包括了函數(shù)體中的內(nèi)容!是對(duì)函數(shù)功能的完整定義。
聲明與定義的區(qū)別:函數(shù)的聲明與函數(shù)的定義形式上十分相似,但是二者有著本質(zhì)上的不同。聲明是不開辟內(nèi)存的,僅僅告訴編譯器,要聲明的部分存在,要預(yù)留一點(diǎn)空間。定義則需要開辟內(nèi)存。
由于C語(yǔ)言的編譯,是對(duì)c/cpp文件的內(nèi)容從上至下編譯。一般子函數(shù)(用戶定義的函數(shù))放在主函數(shù)(main函數(shù))后面的話,main函數(shù)前面就該有聲明,不然編譯系統(tǒng)將無(wú)法識(shí)別到子函數(shù)。
1、函數(shù)原型聲明只是一個(gè)好習(xí)慣,C11標(biāo)準(zhǔn)并沒(méi)有強(qiáng)制要求必須給出原型聲明。而且聲明函數(shù)的同時(shí)定義函數(shù)也是允許的。
2、在一個(gè)源文件中定義函數(shù)且在另一個(gè)文件中調(diào)用函數(shù)時(shí),函數(shù)聲明是必需的。在這種情況下,應(yīng)該在調(diào)用函數(shù)的文件頂部聲明函數(shù)。
3、如果fun1在main函數(shù)之前已經(jīng)實(shí)現(xiàn),那么main函數(shù)調(diào)用fun1的時(shí)候就已經(jīng)知道fun1函數(shù)的類型了,就不需要聲明了。如果fun1在main函數(shù)之后實(shí)現(xiàn),那么調(diào)用之前一定要先聲明。