C語言的主函數(shù),想必大家是用的最多寫的最多的一個(gè)函數(shù),由于長時(shí)間的影響,以及現(xiàn)在大多數(shù)編譯器的默認(rèn),大家見到最多以及自己寫的可能大多是這個(gè)樣子:
int main() { return 0; }
而事實(shí)上,這個(gè)程序沒有任何參數(shù),原則上應(yīng)該加上void,即明確告訴編譯器沒有任何參數(shù),即這樣:
int main(void) { return 0; }
而主函數(shù)的參數(shù),如果有則為下面這個(gè)樣子:
int main(int argc,char *argv[]) { return 0; }
這其實(shí)是主函數(shù)的較完整模樣,它可以接收來自調(diào)用方法的外部傳參,相互通信等。
什么意思呢,大家如果學(xué)完C語言的語法的話可以自己分析看懂了,第一個(gè)argc就是一個(gè)整形變量,表示傳入主函數(shù)參數(shù)的個(gè)數(shù),另一個(gè)argv呢其實(shí)是一個(gè)指針數(shù)組(即放指針的數(shù)組),用來存放多個(gè)外部參數(shù)。
我們可以寫這樣一個(gè)例子程序來進(jìn)行試驗(yàn)理解,代碼如下:
#include<stdio.h> int main(int argc,char *argv[]) { int i; printf("%d\n",argc); for(i=0;i<argc;i++) printf("%s\n",argv[i]); return 0; }
通過這個(gè)代碼大家可以試圖理解,其實(shí)int類型的argc就是傳入main函數(shù)參數(shù)的個(gè)數(shù),而argv就是存放這些參數(shù)的地方(當(dāng)做字符串存在了數(shù)組里)。通過這個(gè)程序,我們就可以試驗(yàn)傳入幾個(gè)參數(shù),看個(gè)個(gè)數(shù)、內(nèi)容是否正確。
將這個(gè)程序編譯后,別著急運(yùn)行。先找到它的exe文件所在位置,注意它的路徑
然后打開cmd控制臺,將我們的exe程序拖入cmd窗口中,然后輸入幾個(gè)字符串作為參數(shù),回車,結(jié)果如圖:
大家可以看到,除了紅框里是我們輸入的以外,輸出argc也就是參數(shù)的個(gè)數(shù)是4并且把這四個(gè)參數(shù)輸了出來,分別是:
第0個(gè):? D:\Project\dotcpp\Debug\dotcpp.exe
第1個(gè):? This
第2個(gè):? is
第3個(gè):? www.sztianhecheng.cn
注意,筆者是從0開始標(biāo)記(argv的數(shù)組),而且一共是四個(gè)參數(shù),除了我們輸入的This is www.sztianhecheng.cn這三個(gè)字符串以外(空格作為分隔),它包含exe程序本身的絕對路徑!
這就是主函數(shù)的參數(shù)傳遞過程,看到這里,大家想必明白些了!
大家可以親自上機(jī)實(shí)驗(yàn),來驗(yàn)證結(jié)果,有問題隨時(shí)留言!
C語言研究中心(www.sztianhecheng.cn)