在調(diào)用可執(zhí)行程序時(shí),可以通過(guò)main函數(shù)的參數(shù)將命令行的調(diào)用參數(shù)傳遞給main函數(shù)。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、澧縣網(wǎng)站維護(hù)、網(wǎng)站推廣。
事實(shí)上,main()函數(shù)既可以是無(wú)參函數(shù),也可以是有參的函數(shù)。對(duì)于有參的形式來(lái)說(shuō),就需要向其傳遞參數(shù)。
從函數(shù)參數(shù)的形式上看,包含一個(gè)整型和一個(gè)指向字符指針的指針。當(dāng)一個(gè)C的源程序經(jīng)過(guò)編譯、鏈接后,會(huì)生成擴(kuò)展名為.EXE的可執(zhí)行文件(對(duì)windows操作系統(tǒng)而言),這是可以在操作系統(tǒng)下直接運(yùn)行的文件,換句話說(shuō),就是由系統(tǒng)來(lái)啟動(dòng)運(yùn)行的。由系統(tǒng)在啟動(dòng)運(yùn)行時(shí)傳遞參數(shù)。
在操作系統(tǒng)環(huán)境下,一條完整的運(yùn)行命令應(yīng)包括兩部分:命令與相應(yīng)的參數(shù)。其格式為:
命令參數(shù)1參數(shù)2....參數(shù)nt;
此格式也稱為命令行。命令行中的命令就是可執(zhí)行文件的文件名,其后所跟參數(shù)需用空格分隔,并為對(duì)命令的進(jìn)一步補(bǔ)充,也即是傳遞給main()函數(shù)的參數(shù)。
命令行與main()函數(shù)的參數(shù)存在如下的關(guān)系:
設(shè)命令行為:program str1 str2 str3 str4 str5
擴(kuò)展資料:
main 函數(shù)的返回值類型必須是 int ,這樣返回值才能傳遞給程序的激活者(如操作系統(tǒng))。
如果 main 函數(shù)的最后沒(méi)有寫 return 語(yǔ)句的話,C99 規(guī)定編譯器要自動(dòng)在生成的目標(biāo)文件中(如 exe 文件)加入return 0; ,表示程序正常退出。不過(guò),我還是建議你最好在main函數(shù)的最后加上return 語(yǔ)句,雖然沒(méi)有這個(gè)必要,但這是一個(gè)好的習(xí)慣。
也就是說(shuō)在最新的C語(yǔ)言標(biāo)準(zhǔn)中強(qiáng)制要求main函數(shù)的返回值類型為int,main函數(shù)的返回值是傳遞給操作系統(tǒng),讓操作系統(tǒng)判斷程序的執(zhí)行情況(是正常結(jié)束還是出現(xiàn)異常)。
參考資料來(lái)源:百度百科-main函數(shù)
在調(diào)用可執(zhí)行程序時(shí),可以通過(guò)main函數(shù)的參數(shù)將命令行的調(diào)用參數(shù)傳遞給main函數(shù)。
一個(gè)c程序有且僅有一個(gè)main函數(shù),任何一個(gè)c程序總是從main函數(shù)開始執(zhí)行,main函數(shù)后面的一對(duì)圓括號(hào)不能省略。
具體形式如下:
main(){ ? }
被大括號(hào){ }括起來(lái)的內(nèi)容稱為main函數(shù)的函數(shù)體,這部分內(nèi)容就是計(jì)算機(jī)要執(zhí)行的內(nèi)容。
在{ ?}里面每一句話后面都有一個(gè)分號(hào)(;),在c語(yǔ)言中,我們把以一個(gè)分號(hào)結(jié)尾的一句話叫做一個(gè)c語(yǔ)言的語(yǔ)句,分號(hào)是語(yǔ)句結(jié)束的標(biāo)志。
擴(kuò)展資料:
程序執(zhí)行總是從main函數(shù)開始,如果有有其他函數(shù),則完成對(duì)其他函數(shù)的調(diào)用后再返回到主函數(shù),最后由main函數(shù)結(jié)束整個(gè)程序。在執(zhí)行程序時(shí),由系統(tǒng)調(diào)用main函數(shù)。
main 函數(shù)是在程序啟動(dòng)中完成對(duì)具有靜態(tài)存儲(chǔ)期的非局部對(duì)象的初始化之后被調(diào)用的。它是程序在有宿主 (hosted)環(huán)境(亦即有操作系統(tǒng))中所指定的入口點(diǎn)。自立程序(啟動(dòng)加載器,操作系統(tǒng)內(nèi)核,等等)的入口點(diǎn)則是由實(shí)現(xiàn)定義的。
參考資料來(lái)源:百度百科-C語(yǔ)言函數(shù)
argc和argv是main函數(shù)的形式參數(shù)。這兩個(gè)形式參數(shù)的類型是系統(tǒng)規(guī)定的。如果main函數(shù)要帶參數(shù),就是這兩個(gè)類型的參數(shù);否則main函數(shù)就沒(méi)有參數(shù)。
堅(jiān)持使用標(biāo)準(zhǔn)的意義在于:當(dāng)你把程序從一個(gè)編譯器移到另一個(gè)編譯器時(shí),照樣能正常運(yùn)行。
由于是 int main( ..) 那么當(dāng)時(shí) 應(yīng)當(dāng)返回 int 但是return 2.3 ;也能運(yùn)行正確,這是因?yàn)榫幾g器自動(dòng)轉(zhuǎn)換2.3為int,截?cái)嗪鬄閞eturn 2;??
如果寫為 return "abc";那么會(huì)報(bào)錯(cuò),??error C2440: “return”: 無(wú)法從“const char [4]”轉(zhuǎn)換為“int”。
變量名稱argc和argv是常規(guī)的名稱,當(dāng)然也可以換成其他名稱。那么,實(shí)際參數(shù)是如何傳遞給main函數(shù)的argc和argv的呢?我們知道,C程序在編譯和鏈接后,都生成一個(gè)可執(zhí)行文件。也可以在命令行下帶參數(shù)執(zhí)行,命令行執(zhí)行的形式為:可執(zhí)行文件名稱 參數(shù)1 參數(shù)2 ... ... 參數(shù)n??蓤?zhí)行文件名稱和參數(shù)、參數(shù)之間均使用空格隔開。
如果按照這種方法執(zhí)行,命令行字符串將作為實(shí)際參數(shù)傳遞給main函數(shù)。具體為:
(1) 可執(zhí)行文件名稱和所有參數(shù)的個(gè)數(shù)之和傳遞給argc;
(2) 可執(zhí)行文件名稱(包括路徑名稱)作為一個(gè)字符串,首地址被賦給argv[0],參數(shù)1也作為一個(gè)字符串,首地址被賦給argv[1],... ...依次類推。
字符串a(chǎn)rav[i](i=1,...argc-1)表式第 i 個(gè)程序參數(shù),標(biāo)準(zhǔn)C 要求argv[argc]是個(gè)null指針,但在有些舊時(shí)編譯器中卻不是這樣的,argv向量以及它所指向的字符串必須是可以修改的,并且他們的值在程序執(zhí)行期間不能被編譯器或操作系統(tǒng)所修改。如果編譯器并不允許大小寫混合的字符串 ,則存儲(chǔ)在argv中的字符串必須采用小寫形式。
1.給main函數(shù)傳遞參數(shù)只有一種方式,即main(int argc, char *argv[])。第一個(gè)參數(shù)必須int,第二個(gè)(如果有的話)必須是char**或char *argv[]。
2.argc代表傳入?yún)?shù)的個(gè)數(shù),argv是一個(gè)數(shù)組,每個(gè)元素都是一個(gè)char *。字符串a(chǎn)rav[i](i=1,...argc-1)表式第 i 個(gè)程序參數(shù),標(biāo)準(zhǔn)C 要求argv[argc]是個(gè)null指針。
3.main函數(shù)參數(shù)理論上支持“無(wú)數(shù)”個(gè),且參數(shù)在進(jìn)程內(nèi)支持修改。