考慮到main函數(shù)的特殊性,lz不明白這個問題可以理解。
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站建設(shè)、仁布網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、仁布網(wǎng)絡(luò)營銷、仁布企業(yè)策劃、仁布品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供仁布建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
main()是省略了返回值類型,C語言會默認(rèn)認(rèn)為成main的類型為int,在main()的函數(shù)體內(nèi)要返回一個值,如return 0;
而void main()的返回值是void類型,也就是說沒有返回值。這樣在main()的函數(shù)體內(nèi)你就不用寫return 0;或者return 1;之類的返回語句。
在一個程序中,可以說你看不出兩者的差別,因?yàn)閙ain()是C語言的入口點(diǎn),入口點(diǎn)如果返回了程序也就結(jié)束了,因此C語言的這個特性似乎沒用??蓻]用的話,C語言的設(shè)計者為什么要這么做呢?!肯定有用。
沒錯,前面我說的是在一個程序中,它似乎沒用。可如果一個程序prog2調(diào)用另一個程序prog1的話(這里指的是prog2直接調(diào)用prog1編譯好的可執(zhí)行文件),那么這個特性就有用了。因?yàn)閜rog2要知道prog1運(yùn)行之后的狀態(tài)。比如你用C寫了一個刪除文件的程序(暫且命名為delf),然后用另一個程序去調(diào)用delf,那么調(diào)用結(jié)果怎么樣啊?這個文件是否刪掉了?這是int main()就會派上用場了。C語言中默認(rèn)的main如果返回為0,那么這個程序調(diào)用就成功了,其他值,則為不同的錯誤代碼。在你的delf程序中,如果那個文件刪除成功,那么就在int main()中返回0,其他調(diào)用delf的程序就知道,噢,這個操作成功了。
在unix/linux系統(tǒng)中的很多命令都是通過這種方式獲得運(yùn)行結(jié)果的。
關(guān)于譚浩強(qiáng)的書,我想不用多說,發(fā)行量說明了一切。畢竟第二版在編寫的時候還比較早,而第三版根據(jù)很多現(xiàn)在的需要進(jìn)行了改寫,內(nèi)容當(dāng)然會好些。鑒于lz是初學(xué)C,其實(shí)大可不必在這個問題上浪費(fèi)太多時間,當(dāng)你有了更多的項(xiàng)目經(jīng)驗(yàn),對這個問題會有更深刻的理解。
上面我已經(jīng)給出了main()、int main()和void main()的區(qū)別,但建議lz忽略這個差別,認(rèn)為成二者一樣,先把C的其他部分學(xué)好。至于只寫成main(),我并不推薦,就算編譯器通過了,這種編程的風(fēng)格也太不嚴(yán)謹(jǐn),不利于好的習(xí)慣的養(yǎng)成。
一、定義
main函數(shù),又稱主函數(shù),是程序執(zhí)行的起點(diǎn),main是相對來說的,如同音學(xué)理論之主調(diào)于泛音,泛音即程序中的除main之外的其他函數(shù),迎合人們的思考方式而生成的而非必定的模式.有主有次,執(zhí)行起來?xiàng)l清縷析,既可將程序模塊化又實(shí)現(xiàn)了一個閉合的整體。
二、main()函數(shù)的形式
在最新的 C99 標(biāo)準(zhǔn)中,只有以下兩種定義方式是正確的:
int main(?void?)? /*?無參數(shù)形式?*/
{
...
return 0;
}
int main(?int argc, char *argv[]?) /*?帶參數(shù)形式?*/
{
...
return 0;
}
int指明了main()函數(shù)的返回類型?,函數(shù)名后面的圓括號一般包含傳遞給函數(shù)的信息。void表示沒有給函數(shù)傳遞參數(shù)。
三、main()函數(shù)的返回值
從前面我們知道m(xù)ain()函數(shù)的返回值類型是int型的,而程序最后的 return 0; 正與之遙相呼應(yīng),0就是main()函數(shù)的返回值。那么這個0返回到那里呢?返回給操作系統(tǒng),表示程序正常退出。
因?yàn)閞eturn語句通常寫在程序的最后,不管返回什么值,只要到達(dá)這一步,說明程序已經(jīng)運(yùn)行完畢。而return的作用不僅在于返回一個值,還在于結(jié)束函數(shù)。
四、main()函數(shù)的參數(shù)
C編譯器允許main()函數(shù)沒有參數(shù),或者有兩個參數(shù)?(有些實(shí)現(xiàn)允許更多的參數(shù),但這只是對標(biāo)準(zhǔn)的擴(kuò)展)。這兩個參數(shù),一個是int類型,一個是字符串類型。
第一個參數(shù)是命令行中的字符串?dāng)?shù)。按照慣例(但不是必須的),這個int參數(shù)被稱為argc(argument count)。第二個參數(shù)是一個指向字符串的指針數(shù)組。命令行中的每個字符串被存儲到內(nèi)存中,并且分配一個指針指向它。
按照慣例,這個指針數(shù)組被稱為argv(argument value)。系統(tǒng)使用空格把各個字符串格開。一般情況下,把程序本身的名字賦值給argv[0],接著,把最后的第一個字符串賦給argv[1]?,等等。
擴(kuò)展資料
C++中的main函數(shù)的應(yīng)用:
C++繼承了C語言的大部分特性,因此保留了“程序總是從main函數(shù)開始執(zhí)行,且總是默認(rèn)從main函數(shù)的return語句或結(jié)尾處結(jié)束運(yùn)行”這一傳統(tǒng),但是要注意,C++中的main函數(shù)要想作為程序執(zhí)行的出入口,必須寫在全局(Global)范圍,不能寫成某個結(jié)構(gòu)體或某個類的成員。
雖然main函數(shù)可以作為結(jié)構(gòu)體或者類的成員函數(shù),但相應(yīng)地會失去作為程序出入口的功能。C++中全局main函數(shù)的書寫格式與C語言完全相同,功能也完全相同,且同一C++程序同樣只能有一個全局main函數(shù)。
參考資料:百度百科——main函數(shù)
主函數(shù)main()是一個c語言程序開始運(yùn)行的標(biāo)志,也就是說,一程序開始執(zhí)行都是從主函數(shù)開始的,不管主函數(shù)的位置在哪里。