「C語言」int main仍是void main?

從大一入學剛接觸C到如今已滿7個月了,雖然剛開始就知道```int main```纔是標準的寫法,但一直沒有深入理解爲何不能用```void main```而必須使用```int main```。html

恰好最近有非計算機相關專業學C的同窗問我```int main```、```main```和```void``` ```main```有什麼區別,便以爲是時候好好整理一番了,因而有了此博客。編程

 

先簡而言之
1.void 和 int 代表聲明不一樣的主函數返回值,不聲明則默認返回值爲int整型。
2.int main可移植性強。
3.C語言歷來沒聲明過```void main```,只聲明過```main()```。
3.拋棄一切用```void main```編寫C程序的習慣!windows

 

稍微深刻數組

main函數,又稱主函數,做爲絕大大部分C程序惟一的入口(好比windows編程中能夠編寫一個其餘windows程序均可以使用的動態連接庫(dll)模塊,因爲DLL模塊不是獨立的程序,所以不須要main函數。再好比,用於專業環境的程序-----如機器人中的控制芯片--可能不須要main函數),是要求有返回值的,該返回值返回給操做系統來代表改程序的執行情況。返回0表明程序正常執行成功,返回非0值表明程序異常結束,所以返回值須要是int整型,因而有了```int main()```的規範。若是使用```void main```,既聲明主函數沒有返回值的話,程序隨能編譯、運行成功,卻不利於操做系統判斷其狀態,這對於由不少C程序構成的大型項目來講是可能會是致命的。函數

尤爲從c99標準(1999年制定的官方C語言標準第二版)開始必須使用```int main```,若是沒加```return 0;```語句C99要求編譯器自動添加(本身寫上是個好習慣)。只聲明```main```的話系統默認爲```int main```。```void main```不管什麼時候都不該該使用由於主函數必須有返回值代表程序運行狀態(在不多的代碼中最少不使用```void main```是一個良好的變成習慣)。url

學校老版教材推薦編寫C程序時使用的 VC6.0 是98年的產品,而C99標準見名思義在1999年制定,所以VC 不會自動添加```return 0;```。Windows下建議嘗試使用DEV C++或Visual Studio的IDE環境(集成開發環境)寫C代碼。spa

 

再深刻一點操作系統

在最新的 C99 標準中,只有如下兩種定義方式是正確的:命令行

int main(void){}//整數類型主函數(無類型)
int main(int argc,char **argv)//整數類型主函數(整數類型 統計參數個數,字符類型*數組指針至字符[])

若是沒有int main而且不是return 0;的話,編譯完C程序後生成了exe文件,在DOS(按下Windows鍵+r鍵後輸入cmd打開)下用執行該文件的命令時(好比是1.exe),語句後面加上 && dir 就會發現並無列出當前目錄的列表!(&& 是按前後順序執行兩條命令的鏈接符,dir命令在DOS下用來列出當前所在文件下的目錄列表的~)指針

爲何沒執行成功dir命令呢?正是由於寫的C程序沒有返回值,操做系統認爲程序沒有成功執行完畢,所以就不會執行 && 後面的dir命令了…

上面兩種正確的定義方式通常接觸C語言階段用前者足以,括號裏面的void指明主函數並不須要參數,然後者:

int main(int argc, char *argv[]);

代表main函數返回值爲整型,帶兩個參數,argc爲命令行參數的個數,argv爲指針數組,前argc個指針爲參數列表,最後一個指針值爲NULL。具體見下方連接。


參考連接和可深刻理解C的其它連接:
main函數_百度百科:http://baike.baidu.com/link?url=QPL_sSuIxACVYcdTzY43iXtxLGWUPY8inpjL2hZZPFscJZehGeHPUlqf_qG2xPtKKY-tlZPrm78Rsw3TwM-D7a#4_3
C99_百度百科:http://baike.baidu.com/link?url=wGdu4AOAT462i_loNUmdUSqMYXoE-Dur0qQSuHRkXbdy-ib-wMnLp7rrJIwhh_tkf1fICH4JcUkMZ_4n_yIOy_
void main()仍是int main()_百度貼吧:http://tieba.baidu.com/p/2085028518
int main(int argc,char* argv[])詳解:http://www.cnblogs.com/avril/archive/2010/03/22/1691477.html
C語言啓動代碼:http://blog.sina.com.cn/s/blog_53c1950a01011vch.html

相關文章
相關標籤/搜索