main()程序的入口橡絕
成都創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、阿巴嘎網(wǎng)絡(luò)推廣、重慶小程序開(kāi)發(fā)、阿巴嘎網(wǎng)絡(luò)營(yíng)銷(xiāo)、阿巴嘎企業(yè)策劃、阿巴嘎品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供阿巴嘎建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
C語(yǔ)言中的主函數(shù)固定名為:main(),每個(gè)系統(tǒng)中必須有一個(gè),且只能有一個(gè)。它 是第一個(gè)運(yùn)行的函數(shù)。
一般情況下,main()寫(xiě)在文件的最后面,其他被調(diào)用的函數(shù)放在前面,這樣定義函數(shù)之前可以不加聲明,如果放在主函數(shù)之后,則必須先聲明,再定義,再被調(diào)用。
main()程序的入口
C語(yǔ)言中的主函數(shù)固定名為:main(),每個(gè)系統(tǒng)中必須有一個(gè),且只能有一個(gè)。賀備它 是第一個(gè)運(yùn)行的函數(shù)。
一般情況下,main()寫(xiě)在文件的最后面,其他被調(diào)用的函數(shù)放在前面,梁拍姿這樣定義函數(shù)之前可以不加聲明,如果放在主函數(shù)之后,則必須先聲明,再定義,再被調(diào)用。
解釋如下:
1、int main()是C語(yǔ)言main函數(shù)的一種聲明方式;
2、int表示函數(shù)的返回值類(lèi)型,表示該主函數(shù)的返回值是一個(gè)int類(lèi)型的值;
3、main表示主函數(shù),是C語(yǔ)言約定的程序執(zhí)行入口,其標(biāo)準(zhǔn)的定義格式為int main(int argc, char *argv[]);在int main()中,()中沒(méi)有數(shù)值表示入?yún)榭?,等同于int main(void);
4、事例中printf("%f",a);表示將a的值作為浮點(diǎn)類(lèi)型打印出來(lái),在屏幕上顯示,而主函數(shù)的返回類(lèi)型int會(huì)將返回的值回傳給主調(diào)進(jìn)程,而不是在屏幕輸出。
5、因此,printf的輸出類(lèi)型跟主函數(shù)的返回類(lèi)型沒(méi)有關(guān)系,互不關(guān)聯(lián)。事例中,return 0 對(duì)應(yīng)才是主函數(shù)的返回值類(lèi)型。
拓展資料
在C語(yǔ)言當(dāng)中,一個(gè)程序,無(wú)論復(fù)雜或簡(jiǎn)單,總體上都是一個(gè)“函數(shù)”;這個(gè)函數(shù)就稱(chēng)為“main() 函數(shù)”,也就是“主函數(shù)”。比如有個(gè)“做菜”程序,那么“ 做菜 ”這個(gè)過(guò)運(yùn)正程就是“主函數(shù)”。在型頃主函數(shù)中,根據(jù)情況,你可能還需要調(diào)用“買(mǎi)菜,切菜,炒菜”等子函數(shù)。
main函數(shù)在程序中大多數(shù)是必須卜悄陸存在的,但是依然有例外情況,比如windows編程中可以編寫(xiě)一個(gè)動(dòng)態(tài)鏈接庫(kù)(dll)模塊,這是其他windows程序可以使用的代碼。由于DLL模塊不是獨(dú)立的程序,因此不需要main函數(shù)。再比如,用于專(zhuān)業(yè)環(huán)境的程序-----如機(jī)器人中的控制芯片--可能不需要main函數(shù)。
參考資料:百度百科:main函數(shù)
main不是關(guān)鍵字,你簡(jiǎn)遲瞎可以定義一個(gè)變量int main;而不會(huì)出錯(cuò),\r\nmain函數(shù)是控制臺(tái)程序的默認(rèn)入口函數(shù),win32app程序的旦虧入口函數(shù)是WinMain \r\nmain()稱(chēng)之為主函數(shù),既可以是無(wú)參函數(shù),也可以是有參的函數(shù)。main()函數(shù)的帶參的形式: \r\nmain(argc,argv) \r\nint argc,char *argv[]; \r\n{ ..... } \r\n//int main(int argc, char *argv[]) { }\r\n不帶參 main() { } \r\nmain()函數(shù)可以調(diào)用其他有參或無(wú)參函數(shù)。調(diào)用有參函數(shù)時(shí),參數(shù)在調(diào)用時(shí)傳遞。 \r\n\r\n一個(gè)完整的C語(yǔ)言程攔空序,是由一個(gè)main()函數(shù)和若干個(gè)其它函數(shù)結(jié)合而成的,或僅由一個(gè)main()函數(shù)構(gòu)成。\r\n從main()函數(shù)開(kāi)始執(zhí)行當(dāng)主函數(shù)執(zhí)行完畢時(shí),亦即程序執(zhí)行完畢。\r\n習(xí)慣上,將主函數(shù)main()放在最前頭。
考慮到main函數(shù)的特殊性,lz不明白這個(gè)問(wèn)題可以理解。
main()是省略了返回值類(lèi)型,C語(yǔ)言會(huì)默認(rèn)認(rèn)為成main的類(lèi)型為int,在main()的函數(shù)體內(nèi)要返回一個(gè)值,如return 0;
而void main()的返回值是void類(lèi)型,也就是說(shuō)沒(méi)有返回值。這樣在main()的函數(shù)體內(nèi)你就不用寫(xiě)return 0;或者return 1;之類(lèi)的返回語(yǔ)句。
在一個(gè)程序中,可以說(shuō)你看不出兩者的差別,因?yàn)閙ain()是C語(yǔ)言的入口點(diǎn),入口點(diǎn)如果返回了程序也就結(jié)束了,因此C語(yǔ)言的這個(gè)特性似乎沒(méi)用??蓻](méi)用的話,C語(yǔ)言的設(shè)計(jì)者為什么要這高侍么做呢?!肯定有用。
沒(méi)錯(cuò),前面我說(shuō)的是在一個(gè)程序中,它似乎沒(méi)用??扇绻粋€(gè)程序prog2調(diào)用另一個(gè)程序prog1的話(這里指的是prog2直接調(diào)用prog1編譯好的可執(zhí)行文件),那么這個(gè)特性就有用了。因?yàn)閜rog2要知道prog1運(yùn)行之后的狀態(tài)。比如你用C寫(xiě)了一個(gè)刪除文件的程序(暫且命名為delf),然后用另一個(gè)程序去調(diào)用delf,那么調(diào)用結(jié)果怎么樣?。窟@個(gè)文件是否刪掉了?這是int main()就會(huì)派上用場(chǎng)了。C語(yǔ)言中默認(rèn)的main如果返回為0,那么這個(gè)程序調(diào)用就成功了,其他值,則為不同的錯(cuò)誤代碼。在你的delf程序中,如果那個(gè)文件刪除成功,那么就在int main()中返回0,其他調(diào)用delf的程序就知道,噢,這個(gè)操作成功了。
在unix/linux系統(tǒng)中的很多命令都是通過(guò)這種方式獲得運(yùn)行結(jié)果的。
關(guān)于譚浩強(qiáng)的書(shū),我想不用多說(shuō),發(fā)行量說(shuō)明了一切。畢竟第二版在編寫(xiě)的時(shí)候還比較早,而第三版根據(jù)很多現(xiàn)在的需要進(jìn)行了改寫(xiě),內(nèi)容當(dāng)然會(huì)好些。鑒于lz是帶念明初學(xué)C,其實(shí)大可不必在這個(gè)問(wèn)題上浪費(fèi)太多時(shí)間,當(dāng)你有了更多的項(xiàng)目經(jīng)驗(yàn),對(duì)這個(gè)問(wèn)題會(huì)有更深刻的理解。
上面我已經(jīng)給出了main()、int main()和void main()的區(qū)別,但建議lz忽略這個(gè)差別,認(rèn)為成二者一樣,先把C的其他部分學(xué)好。至于只寫(xiě)成main(),我并不推薦,就算編譯蠢告器通過(guò)了,這種編程的風(fēng)格也太不嚴(yán)謹(jǐn),不利于好的習(xí)慣的養(yǎng)成。