天天看點

函數定義和聲明中所遇到的問題

在沒有接觸函數之前,我寫一個判斷一個數是奇數還是偶數的代碼是這樣的:

函數定義和聲明中所遇到的問題

學習後,我是這樣寫的:

函數定義和聲明中所遇到的問題

然後我就想啊,這個 f 函數能不能放在main函數後面:

函數定義和聲明中所遇到的問題

結果發現好像也可以...

然後我再加個之前學的菜單函數上去,結果報錯了(還報了兩個警告):

函數定義和聲明中所遇到的問題
函數定義和聲明中所遇到的問題

于是我查了一下這個是怎麼回事

如果在main函數後書寫被調函數,就需要在調用該函數前進行聲明(如果不進行聲明,會預設該函數為int類型),如果沒有聲明,就可能會出現重定義的情況(即原本函數類型不是int類型,比如我上面的menu函數),而f函數由于原本就是int類型的函數,是以之前還是可以運作。

修改後如下:

函數定義和聲明中所遇到的問題

然後我實驗了一下,其實函數的聲明隻要在函數被調用前書寫就行了...

函數定義和聲明中所遇到的問題

但是為了規範(省事點),一般把函數定義寫在main函數前。

特别地,不能把函數定義寫在main函數内(即嵌套定義),但函數可以嵌套使用。

如有不對,歡迎指正。

順帶更正一下:void main這個函數,經過我在網上查詢,發現之前的一個觀點是錯誤的,void表示空類型,我當初寫void main以為它沒有傳回值,但是main函數是有傳回值的。

函數定義和聲明中所遇到的問題