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

學習後,我是這樣寫的:
然後我就想啊,這個 f 函數能不能放在main函數後面:
結果發現好像也可以...
然後我再加個之前學的菜單函數上去,結果報錯了(還報了兩個警告):
于是我查了一下這個是怎麼回事
如果在main函數後書寫被調函數,就需要在調用該函數前進行聲明(如果不進行聲明,會預設該函數為int類型),如果沒有聲明,就可能會出現重定義的情況(即原本函數類型不是int類型,比如我上面的menu函數),而f函數由于原本就是int類型的函數,是以之前還是可以運作。
修改後如下:
然後我實驗了一下,其實函數的聲明隻要在函數被調用前書寫就行了...
但是為了規範(省事點),一般把函數定義寫在main函數前。
特别地,不能把函數定義寫在main函數内(即嵌套定義),但函數可以嵌套使用。
如有不對,歡迎指正。
順帶更正一下:void main這個函數,經過我在網上查詢,發現之前的一個觀點是錯誤的,void表示空類型,我當初寫void main以為它沒有傳回值,但是main函數是有傳回值的。