argc即為argument count的縮寫,表示傳入main函數(shù)的參數(shù)個數(shù);
argv即為argument vector的縮寫,表示傳入main函數(shù)的參數(shù)序列或指針,并且第一個參數(shù)argv[0]一定是程序的名稱,并且包含了程序所在的完整路徑,所以確切的說需要我們輸入的main函數(shù)的參數(shù)個數(shù)應(yīng)該是argc-1個;空格分隔參數(shù),其長度為argc.數(shù)組下標(biāo)從0開始,argv[argc]=NULL。
argv[0] 指向程序運(yùn)行時的全路徑名
argv[1] 指向程序在命令中執(zhí)行程序名后的第一個字符串
argv[2] 指向執(zhí)行程序名后的第二個字符串
argv[argc] 為NULL
#include <iostream> using namespace std; void main(int argc,char *argv[]) { for(int i=0;i<argc;i++) { cout<<"argument["<<i<<"] is: "<<argv[i]<<endl; } system("pause"); }
argv是指向指針的指針,main函數(shù)的第二個參數(shù)“char *argv[]“也可以替換為 “char **argv“,兩者是等價的。
在編譯環(huán)境下按F5運(yùn)行,輸出如下:
相關(guān)信息:《常見問題》
可見,在沒有參數(shù)傳入的情況下,保存程序名稱的第一個變量argv[0]依然存在。
傳參數(shù)給main函數(shù)有兩種方法,第一種方式是在編譯環(huán)境中設(shè)置,以vs2012為例,右擊項(xiàng)目—>屬性—>配置屬性—>調(diào)試—>命令參數(shù),在命令參數(shù)中輸入,每個參數(shù)之間用空格隔開。
之后點(diǎn)擊確定并應(yīng)用,運(yùn)行之后顯示如下:
第二種方式也是經(jīng)常會用到的方式是通過命令提示符傳入。首先需要打開命令提示符窗口,點(diǎn)擊開始菜單在“搜索程序和文件”里輸入命令“cmd”或者直接按快捷鍵 Windows+R,在彈出的對話框里輸入“cmd”即可打開命令提示符窗口:
打開命令提示符窗口后需要輸入生成的exe文件所在的完整路徑,一個簡便的方法是把exe文件直接拖入提示符窗口即可,之后輸入傳入?yún)?shù),以空格分隔,之后回車,顯示如下: