這個main函數,是c語言默認的函數入口。
成都創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站設計、成都網站建設、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的堆龍德慶網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
當打開程序的時候,先執行默認的一些初始化,然后調用main
//?C語言由bell實驗室創立,但后續分支太多
//?所以ISO(國際標準化組織)制定了統一標準
//?目前通過的標準主要有3個?C89?C99?C11
ASNSI?X3.159-1989????????????對應C89由ASNSI制定
ISO/IEC?9899:1990????????????還是C89,只是ISO從ASNSI那里“抄襲”過來,又稱C90
ISO/IEC?9899/AMD1:1995???????對于C89的補充,又稱C95
ISO/IEC?9899:1999????????????C99標準
ISO/IEC?9899:2011????????????C11標準
//關于main函數的標準在C89和C99又有差異
類型一,不指明返回類型
main?(){return?0;}
//這在C89中是合法的,因為不指明返回類型其實是隱含的告訴編譯器,這個函數返回類型是int
//這在C99中是非法的,因為C99要求顯式聲明所有函數
類型二,不書寫return?...;在main函數中
int?main(void){}
//?C89,?函數返回值未定義
//?C99,?當main函數返回類型為int,?且沒有寫return語句時,默認返回0
//?C99,?其他情況下,返回值未定義
類型三,定以返回值為非int
void?main(void)?{return;}
//?C89,?非法(不bb,?就是非法)
//?C99,?允許main函數返回類型由實現定義,支持void以及其他類型返回值
//?所以你的編譯環境,不支持C99標準
//?而你的書,比較“新”
//?建議書寫標準宏編譯
#if?__STDC_VERSION__??199901L????????//?標準支持C99
void?main(void)
#elif?defined?__STDC__????????????????//?支持標準C(89/99)
int?main(void)
#else?????????????????????????????????//?如果都不支持,我也很難受
#error?Standard?C?not?support
#endif
考慮到main函數的特殊性,lz不明白這個問題可以理解。
main()是省略了返回值類型,C語言會默認認為成main的類型為int,在main()的函數體內要返回一個值,如return 0;
而void main()的返回值是void類型,也就是說沒有返回值。這樣在main()的函數體內你就不用寫return 0;或者return 1;之類的返回語句。
在一個程序中,可以說你看不出兩者的差別,因為main()是C語言的入口點,入口點如果返回了程序也就結束了,因此C語言的這個特性似乎沒用。可沒用的話,C語言的設計者為什么要這么做呢?!肯定有用。
沒錯,前面我說的是在一個程序中,它似乎沒用。可如果一個程序prog2調用另一個程序prog1的話(這里指的是prog2直接調用prog1編譯好的可執行文件),那么這個特性就有用了。因為prog2要知道prog1運行之后的狀態。比如你用C寫了一個刪除文件的程序(暫且命名為delf),然后用另一個程序去調用delf,那么調用結果怎么樣啊?這個文件是否刪掉了?這是int main()就會派上用場了。C語言中默認的main如果返回為0,那么這個程序調用就成功了,其他值,則為不同的錯誤代碼。在你的delf程序中,如果那個文件刪除成功,那么就在int main()中返回0,其他調用delf的程序就知道,噢,這個操作成功了。
在unix/linux系統中的很多命令都是通過這種方式獲得運行結果的。
關于譚浩強的書,我想不用多說,發行量說明了一切。畢竟第二版在編寫的時候還比較早,而第三版根據很多現在的需要進行了改寫,內容當然會好些。鑒于lz是初學C,其實大可不必在這個問題上浪費太多時間,當你有了更多的項目經驗,對這個問題會有更深刻的理解。
上面我已經給出了main()、int main()和void main()的區別,但建議lz忽略這個差別,認為成二者一樣,先把C的其他部分學好。至于只寫成main(),我并不推薦,就算編譯器通過了,這種編程的風格也太不嚴謹,不利于好的習慣的養成。
解釋如下:
1、int main()是C語言main函數的一種聲明方式;
2、int表示函數的返回值類型,表示該主函數的返回值是一個int類型的值;
3、main表示主函數,是C語言約定的程序執行入口,其標準的定義格式為int main(int argc, char *argv[]);在int main()中,()中沒有數值表示入參為空,等同于int main(void);
4、事例中printf("%f",a);表示將a的值作為浮點類型打印出來,在屏幕上顯示,而主函數的返回類型int會將返回的值回傳給主調進程,而不是在屏幕輸出。
5、因此,printf的輸出類型跟主函數的返回類型沒有關系,互不關聯。事例中,return 0 對應才是主函數的返回值類型。
拓展資料
在C語言當中,一個程序,無論復雜或簡單,總體上都是一個“函數”;這個函數就稱為“main() 函數”,也就是“主函數”。比如有個“做菜”程序,那么“ 做菜 ”這個過程就是“主函數”。在主函數中,根據情況,你可能還需要調用“買菜,切菜,炒菜”等子函數。
main函數在程序中大多數是必須存在的,但是依然有例外情況,比如windows編程中可以編寫一個動態鏈接庫(dll)模塊,這是其他windows程序可以使用的代碼。由于DLL模塊不是獨立的程序,因此不需要main函數。再比如,用于專業環境的程序-----如機器人中的控制芯片--可能不需要main函數。
參考資料:百度百科:main函數
網站題目:c語言默認的main函數 c語言中的main函數是什么
本文網址:http://vcdvsql.cn/article0/dopgoio.html
成都網站建設公司_創新互聯,為您提供面包屑導航、虛擬主機、品牌網站建設、搜索引擎優化、做網站、企業網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯