亚洲全黄无码一级在线看_国产剧情久久久性色_无码av一区二区三区无码_亚洲成a×人片在线观看

當(dāng)前位置: 首頁 > 軍事新聞 >

C語言的main函數(shù)到底該怎么寫

時(shí)間:2020-07-14 17:32來源:網(wǎng)絡(luò)整理 瀏覽:
前言從開始學(xué)習(xí)C語言到現(xiàn)在,我們似乎看到了很多個(gè)版本的main函數(shù),那么哪一種才是正確的呢?我們先來看看目前有哪些版本。main函數(shù)版本第一
前言

從開始學(xué)習(xí)C語言到現(xiàn)在,我們似乎看到了很多個(gè)版本的main函數(shù),那么哪一種才是正確的呢?我們先來看看目前有哪些版本。

main函數(shù)版本

第一種,沒有返回值,沒有入?yún)ⅲ?/p>

main()

在C89標(biāo)準(zhǔn)中,這種寫法是可以接受的,但使用現(xiàn)在的編譯器編譯時(shí),會報(bào)告警,并且會將其返回值默認(rèn)為int。實(shí)際上,如果函數(shù)沒有顯式聲明返回類型,那么編譯器會將返回值默認(rèn)為int。

第二種,返回值為void,沒有入?yún)ⅲ?/p>

voidmain()

這種形式的來源不得而知。但是為何這么多初學(xué)者使用?main函數(shù)的返回值最終會作為程序的退出狀態(tài),而一旦聲明為void,在程序退出后,想要獲取其退出狀態(tài)也就不可以了。因此不建議其返回值為void。

第三種,返回值為int,參數(shù)為void:

intmain(void)

這是常見的一種寫法。形參為void,表明它在調(diào)用的時(shí)候不能傳入任何參數(shù),那么它也就不能獲取命令行參數(shù)了。

第四種,返回值為int,沒有參數(shù):

intmain()

看起來似乎和第三種沒有什么區(qū)別,但這種形式卻有些許不同。雖然它的聲明沒有入?yún)?,?shí)際調(diào)用卻可以傳入?yún)?shù),看下面的例子:

#include<stdio.h>
voidtest();
intmain(){
test(4);
return0;
}
voidtest(inta){
printf("%d",a);
}

對于上面的程序,我們?nèi)匀豢梢跃幾g并正常運(yùn)行,test函數(shù)雖然聲明為無入?yún)?,但調(diào)用時(shí)卻是可以傳入任何參數(shù)或不傳參數(shù)的。


第五種,返回值為int,有兩個(gè)入?yún)ⅲ?/p>

intmain(intargc,char*argv[])

這也是最常見的一種寫法。第一個(gè)入?yún)槊钚袇?shù)個(gè)數(shù),第二個(gè)入?yún)槊钚袇?shù)數(shù)組。通常用于實(shí)現(xiàn)需要從命令行獲取參數(shù)的功能。

第六種,返回值為int,有三個(gè)入?yún)ⅲ?/p>

intmain(intargc,char*argv[],char*envp[]

這種和第五種相似,但多了一個(gè)參數(shù),用于獲取環(huán)境變量,這種形式多源于編譯器的擴(kuò)展。但全局變量environ可以代替envp的作用,獲取或者設(shè)置環(huán)境變量可以使用getenv或putenv,因此也沒有必要使用該形式。

沒想到吧,仔細(xì)數(shù)一數(shù)竟然有這么種寫法?但是真相究竟如何?到底使用哪種呢?

真相大白

C89/C99/C11標(biāo)準(zhǔn)文檔中只提供了兩種main函數(shù)的寫法

intmain(void){/*...*/}

intmain(intargc,char*argv[]){/*...*/}

也就是說,其他的寫法都是不符合標(biāo)準(zhǔn)的,有的是歷史遺留問題,有的是編譯器擴(kuò)展,更有的不知從何而來。當(dāng)然對于帶參數(shù)的寫法,其參數(shù)名可自定義。另外對于除標(biāo)準(zhǔn)提供的以外的寫法,不同的編譯器有不同的處理策略,有的可能編譯不過,有的可能報(bào)警告,但一個(gè)“正經(jīng)”的編譯器是不會對標(biāo)準(zhǔn)提供的形式產(chǎn)生質(zhì)疑的。

總結(jié)

至此,我們已經(jīng)知道了c語言main函數(shù)的寫法,我們來總結(jié)一下前面的內(nèi)容:

C標(biāo)準(zhǔn)只提供了兩種main的形式,即前面提到的第三種和第五種。為了代碼的通用可移植性,建議采用標(biāo)準(zhǔn)提供的形式。不需要命令行參數(shù)可采用第三種,需要命令行參數(shù)采用第五種。如果一個(gè)函數(shù)確定無需傳入任何參數(shù),那么用void限定是一個(gè)不錯(cuò)的選擇。函數(shù)沒有聲明返回值時(shí),編譯器默認(rèn)其返回值為int。


C語言的main函數(shù)到底該怎么寫


C語言的main函數(shù)到底該怎么寫


關(guān)注我:帶你遨游代碼的世界~獲取更多:私信 “資料” 獲取
推薦內(nèi)容