main函數(shù)可以不帶參數(shù),也可以帶參數(shù),這個(gè)參數(shù)可以認(rèn)為是 main函數(shù)的形式參數(shù)。
為輪臺(tái)等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及輪臺(tái)網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、輪臺(tái)網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
C語言規(guī)定main函數(shù)的參數(shù)只能有兩個(gè),還規(guī)定argc(第一個(gè)形參)必須是整型變量,argv( 第二個(gè)形參)必須是指向字符串的指針數(shù)組。加上形參說明后,main函數(shù)的函數(shù)頭應(yīng)寫為:
int main (int argc,char *argv[])
由于main函數(shù)不能被其它函數(shù)調(diào)用,因此不可能在程序內(nèi)部取得實(shí)際值。那么,在何處把實(shí)參值賦予main函數(shù)的形參呢? 實(shí)際上,main函數(shù)的參數(shù)值是從操作系統(tǒng)命令行上獲得的。當(dāng)我們要運(yùn)行一個(gè)可執(zhí)行文件時(shí),在DOS提示符下鍵入文件名,再輸入實(shí)際參數(shù)即可把這些實(shí)參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\可執(zhí)行文件名 參數(shù) 參數(shù)……
根據(jù)需要確定,一般情況下,最多有3個(gè):
int main(int argc,char *argv[],char *envs[])
可以有任意多個(gè),但是常用的是前三個(gè):
第一個(gè)是一個(gè)整數(shù),表示了傳入的參數(shù)數(shù)量(包含程序路徑本身在內(nèi))
第二個(gè)是一個(gè)字符指針數(shù)組,保存了傳入的各個(gè)參數(shù)(包含程序路徑本身在內(nèi),以字符串形式保存)
第三個(gè)是一個(gè)字符指針數(shù)組,保存了當(dāng)前操作系統(tǒng)中的環(huán)境變量。
C語言中主函數(shù)指的是main函數(shù)
主函數(shù)的兩個(gè)形參形式中的形參,允許從執(zhí)行環(huán)境中傳遞任意的多字節(jié)字符串(它們通常被稱為命令行參數(shù)),各個(gè)指針 argv.. argv[argc-1] 指向每個(gè)這些字符串的第一個(gè)字符。
argv[0] 是指向一個(gè)表示用于執(zhí)行該程序自身的名字的空結(jié)尾多字節(jié)字符串(或者當(dāng)執(zhí)行環(huán)境不支持時(shí),為空字符串 "")的開頭字符的指針。這些字符串是可以改動(dòng)的,雖然對(duì)它們的改動(dòng)并不會(huì)被傳回給執(zhí)行環(huán)境:比如可以用 std::strtok 來使用它們。由 argv 所指向的數(shù)組的大小至少為 argc+1,其最后一個(gè)元素 argv[argc] 保證為一個(gè)空指針。
擴(kuò)展資料:
C++繼承了C語言的大部分特性,因此保留了“程序總是從main函數(shù)開始執(zhí)行,且總是默認(rèn)從main函數(shù)的return語句或結(jié)尾處結(jié)束運(yùn)行”這一傳統(tǒng),但是要注意,C++中的main函數(shù)要想作為程序執(zhí)行的出入口,必須寫在全局(Global)范圍,不能寫成某個(gè)結(jié)構(gòu)體或某個(gè)類的成員。雖然main函數(shù)可以作為結(jié)構(gòu)體或者類的成員函數(shù),但相應(yīng)地會(huì)失去作為程序出入口的功能。
C++中全局main函數(shù)的書寫格式與C語言完全相同,功能也完全相同,且同一C++程序同樣只能有一個(gè)全局main函數(shù)。