在一些教材中,我們常常可以看到main函數的形式如下:int main(int argc,char* argv[]),這兩個參數是干什么的呢?如何傳遞給main函數呢?
1.含義
首先必須知道,main函數是由系統調用的,在調用的同時傳遞參數。
例如,在文件file1.c中,有如下內容:
#include <stdio.h> int main(int argc,char* argv[]) { printf("exe executed!\n"); }
經過編譯后,在工程目錄的debug文件夾下,可以得到“file1.exe”文件,我們要在DOS下執行這個文件,就要以一定的格式輸入命令行,格式如下:
命令名 參數1,參數2,……參數n
比如,要執行上述exe文件,可以輸入:
file1
可以得到以下結果:
如果我們要傳遞參數,則可以輸入以下內容:
file1 China BeiJing
現在,我告訴您:
argc的含義是argument count:它是一個int行變量,表示傳遞給main函數的參數數量;
argv的含義是argument value(值):它是一個指向字符串的指針數組,每個指針元素指向各個具體的參數;
您可以猜到argc的值和argv的值是多少了么?
argc=3,而不是2,因為命令名“file1”也算一個參數!因此從此處也可以知道,argc是恆>=1的。
而argv呢?看下圖:
2.用法
既然知道了各個參數的含義,那么如何使用該參數呢?看了下面這個簡單的程序您就會明白:
#include <stdio.h> int main(int argc,char* argv[]) { while(argc>0) { argc--; printf("%s\n",*argv); argv++; /*指向下一條參數*/ } }
調用方法和運行結果:
懂了吧?實際上,這兩個變量的名字 實際上可以隨便取的,取坐argc和argv只不過是習慣而已。
P.S:
為什么第二個形參參數要用指針數組?
由於命令行中的字符串的長度事先並不知道,而且各個參數字符串的長度一般也並不相同,因此只有用指針數組能夠比較好地滿足上述要求,可以從這里體會指針數組的用處。