1. 程式人生 > >main函式中兩個引數的用法總結

main函式中兩個引數的用法總結

1、定義 
C語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為: main (argc,argv)C語言還規定argc(第一個形參)必須是整型變數,argv( 第二個形參)必須是指向字串的指標陣列。加上形參說明後,main函式的函式頭應寫為:
int main (int argc,char *argv[]){…}或者 
int main (int argc,char **argv){…} 
其中第一個表示引數的個數;第二個引數中argv[0]為自身執行目錄路徑和程式名,argv[1]指向第一個引數、argv[2]指向第二個引數…… 
完整程式如下:

 

 
  1. #include<iostream>

  2. #include<string>

  3.  
  4. using namespace std;

  5.  
  6. int main(int argc, char **argv)

  7. {

  8. string str;

  9. for(int i=0;i!=argc;++i)

  10. {

  11. cout<<"arg["<<i<<"]"<<argv[i]<<endl;

  12. }

  13.  
  14. system("pause");

  15. return 0;

  16. }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15


 

2、如何執行 
由於main函式不能被其它函式呼叫, 因此不可能在程式內部取得實際值。那麼,在何處把實參值賦予main函式的形參呢? 實際上,main函式的引數值是從作業系統命令列上獲得的。當我們要執行一個可執行檔案時,在DOS提示符下鍵入檔名,再輸入實際引數即可把這些實參傳 送到main的形參中去,具體操作如下: 
首先在C++中完成編譯之後,然後在dos命令視窗下切換到.exe執行檔案所在的資料夾(dos下如何切換目錄見

DOS中切換碟符及目錄),再在該路徑下輸入帶引數的命令:XXX.exe a b c …即可得到輸出。

3、練習題 
不合法的main函式命令列引數表示形式是 
(A) main(int a,char *c[]) (B) main(int arc,char **arv) 
(C) main(int argc,char *argv) (D) main(int argv,char *argc[])

分析:main的第2個引數應該為一個字元陣列指標,B的第二個引數是一個指向字元的指標的指標,也就是一個字串陣列; 
C的第二個引數是一個指向字元的指標,也就是一個字串. 
char **argv或者char *argv[]是個二維陣列,也可以理解為一個存放字元指標的陣列—字元指標陣列。每個元素存放一個字元指標,而字元指標又是可以指向一個字串的,這n個字串分別由argv[0]~~~argv[n]來指向. 
這個就是指標陣列,不是別的,特別不是二維陣列。 
綜述,答案為C。