第一,如果你沒有看錯就是你的書錯了,只有int和char類型的函數(shù)不必聲明
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供漾濞網(wǎng)站建設(shè)、漾濞做網(wǎng)站、漾濞網(wǎng)站設(shè)計、漾濞網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、漾濞企業(yè)網(wǎng)站模板建站服務(wù),十余年漾濞做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
第二,C中可以不聲明函數(shù)的條件是3個
1就是上面我說的
2.是被調(diào)函數(shù)定義在主調(diào)函數(shù)之前,可不必聲明
3函數(shù)的外部已聲明過了,個個主調(diào)函數(shù)中不必聲明
對于第二點,很好解釋,因為聲明的目的在于告訴編譯器有這么個自定義函數(shù),返回類型是什么,如果被調(diào)函數(shù)定義在主調(diào)函數(shù)之前,那么編譯器自然就知道了這個函數(shù)
你把f2和f1換下位置并去掉聲明就明白了
再說一句,寫函數(shù)聲明是編寫程序的良好習(xí)慣
請注意這是C程序,C官方聲明標(biāo)準(zhǔn)編譯器是Turboc 2。0
不要把C++的概念強(qiáng)加給C
我不是說VC++6不好,而是說既然是在學(xué)C,就要用標(biāo)準(zhǔn)的C編譯器,只有標(biāo)準(zhǔn)C編譯器才能正確的學(xué)習(xí)C的基礎(chǔ)理論
除非你在調(diào)用前已經(jīng)定義過這個函數(shù),可以不用聲明;否則必須要聲明。調(diào)用函數(shù)的要求根據(jù)你自己程序的要求來定
這個程序可以這樣分析,其實很簡單,首先你要添加上去#include
這個頭文件,其次你就這樣記憶:要是main()函數(shù)在被調(diào)用函數(shù)的前面,也就是像你所說的這樣情況的話,就必須在main()函數(shù)前面對被調(diào)用函數(shù)進(jìn)行聲明才可以正常調(diào)用函數(shù),不然編譯會出錯的,
如果被調(diào)用函數(shù)出現(xiàn)在在了main()函數(shù)的上面,也就是mian()函數(shù)和你現(xiàn)在max函數(shù)位置調(diào)換一下,那么就不必對被調(diào)用函數(shù)進(jìn)行聲明了,直接調(diào)用就可以了。
這樣的記憶比較清晰一點,我平時編程是將主函數(shù)寫在最后,前面寫被調(diào)用函數(shù),這樣就避免了忘記寫函數(shù)聲明而編譯出錯,希望我的解答能夠幫助到你,
不可以,對函數(shù)進(jìn)行聲明時,參數(shù)可省略,但是參數(shù)類型不能,而且必須和定義時相同,要不然會出錯。如果類型不同,編譯時系統(tǒng)會報錯,提示沒有此函數(shù)(也就是此函數(shù)沒有聲明,系統(tǒng)找不到這個函數(shù)在哪里定義的)。