像Turbo c++、VC++這些現(xiàn)成編譯環(huán)境 可以不用理解這些 argc,argv 那是用命令行編譯程序時(shí)就有用 主函數(shù)main中變量(int argc,char *argv[ ])的含義 我們平時(shí)定義主函數(shù)時(shí)通常的寫法為:int main( )或void main( ) 其實(shí),int main( ) 只是 UNIX 及 Linux 默許的用法, main(int argc, char *argv[ ], char *env[ ])才是UNIX和Linux中的標(biāo)準(zhǔn)寫法。 * argc: 整數(shù),用來統(tǒng)計(jì)你運(yùn)行程序時(shí)送給main函數(shù)的命令行參數(shù)的個(gè)數(shù) * argv: 字符串?dāng)?shù)組,用來存放指向你的字符串參數(shù)的指針數(shù)組,每一個(gè)元素指向一個(gè)參數(shù) argv[0] 指向程序運(yùn)行的全路徑名 argv[1] 指向在DOS命令行中執(zhí)行程序名后的第一個(gè)字符串 argv[2] 指向執(zhí)行程序名后的第二個(gè)字符串 ... argv[argc]為NULL。 *env:字符串?dāng)?shù)組。env[ ]的每一個(gè)元素都包含ENVVAR=value形式的字符 串。其中ENVVAR為環(huán)境變量,value 為ENVVAR的對應(yīng)值。 argc, argv,env是在main( )函數(shù)之前被賦值的,編譯器生成的可執(zhí)行文件,main( )不是真正的入口點(diǎn),而是一個(gè)標(biāo)準(zhǔn)的函數(shù),這個(gè)函數(shù)名與具體的操作系統(tǒng)有關(guān)。 經(jīng)典小例子,對于理解argv[ ]函數(shù)很管用: #include ; int main(int argc, char *argv[ ]) { printf("%d
",argc); while(argc) printf("%s
",argv[--argc]); return 0; } 假設(shè)將其編譯為test.exe 在命令行下 〉test hello 得到的輸出結(jié)果為 2 hello test main(int argc, char*argv[ ]),其中argc是指變量的個(gè)數(shù),本例中即指test和hello(注意,命令test也算在內(nèi))這兩個(gè)變量,argc即為2 argv是一個(gè)char *的數(shù)組,其中存放指向參數(shù)變量的指針,此處argv[0]指向test,argv[1]指向hello 再例: #include #include int main(int argc,char *argv[ ]) { if(argc==1 || argc>2) {printf("請輸入想要編輯的文件名如:fillname");} if(argc==2) { printf("編輯 %s
",argv[1]); } exit(0) } 編譯該程序:gcc -o edit edit.c 運(yùn)行:〉edit 結(jié)果:請輸入想要編輯的文件名如:fillname 運(yùn)行:〉edit f1.txt 結(jié)果:編輯 f1.txt 執(zhí)行edit時(shí),argc為1,argv[0]指向edit 而執(zhí)行edit f1.txt時(shí),argc的值為2,argv[0]指向edit,argv[1]指向f1.txt