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]指向第二個引數……
完整程式如下:
-
#include<iostream>
-
#include<string>
-
using namespace std;
-
int main(int argc, char **argv)
-
{
-
string str;
-
for(int i=0;i!=argc;++i)
-
{
-
cout<<"arg["<<i<<"]"<<argv[i]<<endl;
-
}
-
system("pause");
-
return 0;
-
}
- 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下如何切換目錄見
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。