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