十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
聲明與定義的區(qū)別:函數(shù)的聲明與函數(shù)的定義形式上十分相似,但是二者有著本質(zhì)上的不同。聲明是不開(kāi)辟內(nèi)存的,僅僅告訴編譯器,要聲明的部分存在,要預(yù)留一點(diǎn)空間。定義則需要開(kāi)辟內(nèi)存。
專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)平樂(lè)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
樓主可以這樣想,C語(yǔ)言中,無(wú)論是常量,變量,函數(shù),只有先定義才能使用的。在函數(shù)定義時(shí),大腦要往一般的常量,變量定義的方向,切忌先不要想函數(shù)的別的。定義好后,把函數(shù)的定義先放一邊,不管它。
函數(shù)的聲明,函數(shù)有兩種類(lèi)型,一種是有返回值的,前面用int float double char 來(lái)定義,如int f(int n);前面的int就是返回值類(lèi)型。
區(qū)別:定義也是聲明,extern聲明不是定義。定義分配存儲(chǔ)空間,而聲明不會(huì)。通過(guò)使用extern關(guān)鍵字聲明變量名而不定義它。 事實(shí)上它只是說(shuō)明變量定義在程序的其他地方。程序中變量可以聲明多次,但只能定義一次。
int b) // 函數(shù)定義{ return a + b;}解釋一下:由于C語(yǔ)言的編譯,是對(duì)c/cpp文件的內(nèi)容從上至下編譯。
find()函數(shù)在主函數(shù)中(被調(diào)用之前)聲明是可以的,但不能在主函數(shù)中定義,這是語(yǔ)法規(guī)定,沒(méi)有什么好解釋的。
然后,我要明確一下你的概念,把子函數(shù)整個(gè)寫(xiě)在main前面,那不叫在main前聲明,那叫定義。。定義就是給一個(gè)變量賦值或者實(shí)現(xiàn)一個(gè)函數(shù)的函數(shù)體等,而聲明只是說(shuō):下面的代碼需要用到這個(gè)東西,不需要去實(shí)現(xiàn)。
C語(yǔ)言,子函數(shù)在主函數(shù)的后面,就需要把子函數(shù)聲明寫(xiě)在main函數(shù)的前面;如果子函數(shù)在主函數(shù)的前面,子函數(shù)就不需要聲明,在main函數(shù)里可以直接調(diào)用。
編譯器編譯時(shí),是逐行編譯的。但是它是先找到主函數(shù),主函數(shù)編譯完也表明這個(gè)程序已經(jīng)編譯完了。如果主函數(shù)放在其他函數(shù)之前,那么在主函數(shù)中要調(diào)用的子函數(shù)(自定義函數(shù))要先在主函數(shù)之前聲明它的存在。
不對(duì)。C語(yǔ)言中函數(shù)可以定義在main()函數(shù)外面,如下列代碼中定義的swap函數(shù),就是在main()函數(shù)外面。
不用,一般函數(shù)都是獨(dú)立的,不用在函數(shù)內(nèi)部定義,在函數(shù)內(nèi)部定義會(huì)使代碼看起來(lái)非常亂,函數(shù)在main()函數(shù)上面,就不用申明;函數(shù)在main()下面就要先在main()的上方聲明。
在C語(yǔ)言中,聲明(Declaration)這個(gè)詞的本義就是指定標(biāo)識(shí)符的意義和性質(zhì)(A declaration specifies the interpretation and attributes of a set of identifiers.),某個(gè)標(biāo)識(shí)符的定義(Definition)同時(shí)也是這個(gè)標(biāo)志符的“聲明”(Declaration)。
在調(diào)用前聲明。但通常放在主調(diào)函數(shù)的開(kāi)頭部位或所有函數(shù)之外的前面。
如果是函數(shù)聲明,放的位置是在main內(nèi)還是外沒(méi)有區(qū)別,只要在調(diào)用之前即可。但是變量就不同了,在main外 是全局變量,在main內(nèi)是main函數(shù)的局部變量。
在C語(yǔ)言中,程序從main()函數(shù)開(kāi)始運(yùn)行,其他函數(shù)要被main函數(shù)調(diào)用才可以運(yùn)行。在從shell解釋器運(yùn)行編譯好的可執(zhí)行程序時(shí),main函數(shù)會(huì)被shell啟動(dòng),開(kāi)始運(yùn)行。C語(yǔ)言的函數(shù)在使用時(shí)要經(jīng)過(guò)3個(gè)步驟:聲明、定義、調(diào)用。
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){}】。
放在后面,要先聲明下原型,這樣編譯器在編譯時(shí),就可以知道有這個(gè)函數(shù),會(huì)往下面查找,并編譯。放在前面,可以直接定義,main中使用。放前放后,純屬個(gè)人編寫(xiě)風(fēng)格,并無(wú)硬性規(guī)定。