眾所周知,每個C++程式都有一個main函數。main函數的兩個形參我們至今未曾看到,因為所有程式都沒有定義他們。迄今為止,所有的程式定義都是具有空形參的main函數。但是事實上,main函數是唯一不定義形參就含有形參的函數。這兩個形參分別是int 型和指向char指標數組的指標。整數參數包含了使用者為運行程式在命令列鍵入的實參數量,char*[]實參指向一個字元指標數組,數組本身又指向文本型命令列實參。雖然這兩個形參可以被任意命名,但約定為argc和argv,並需要在main函數的標頭檔中聲明。
int main(int argc, char* argv[]){ // to do what you design}
argc形參包含的 技術值永遠不小於1,如果使用者在命令列鍵入實參,argc就有較高的計數值。argv指向的數值至少有一個char指標,這個指標指向程式的可執行檔名。如果argv大於1,隨著命令列上輸入若干命令列實參,argv[1],argb[2]則將分別指向對應的實參,多個實參用空格分開。
下面用一個例子來說明:
int main(int argc, char* argv[]){cout<<"argc ="<<argc<<endl;int i;for (i=0; i<argc;++i){cout<<"argv["<<i<<"]="<<argv[i]<<endl;}getchar();return 0;}
運行結果如所示:
而在cmd下運行時,如果有多個參數輸入,如所示:
從上面的圖可以看到,包括可執行檔一個輸入了三個參數,對應的argc=3,其他的參數如argv數組顯示的那樣。應用程式解釋命令列實參的意義,並對程式如何運行做相應的修改。命令列實參可以包含程式開關設定、模式、檔案清單和路徑說明等。
另外,不同的編譯器和作業系統,對命令列的參數輸入可能存在不同的差別,有些編譯器要求實參前面必須有-或/(破折號或斜線)。
本文主要內容節選自《C++大學自學教程》。