一、標準 main 簽名
int main(int argc, char* argv[])
// 或
int main(int argc, char** argv)
argc:參數個數(包含程式名稱本身)。
argv:指向字串指標的指標(指標陣列),argv[0] 為程式路徑/名稱,argv[argc] 保證為 NULL。
二、參數解析範例
方法 1:索引迴圈
int main(int argc, char* argv[]) {
for (int i = 0; i < argc; i++)
cout << "argv[" << i << "] = " << argv[i] << endl;
}
方法 2:指標遞增(利用 NULL 結尾)
int main(int argc, char* argv[]) {
while (*argv != NULL) { // 或 while (*argv)
cout << *argv++ << endl;
}
}
三、完整原型與環境變數
int main(int argc, char* argv[], char* envp[])
envp:環境變數字串陣列(NAME=VALUE 格式),以 NULL 結尾。較少直接使用,通常透過 getenv() 存取。
四、實務注意事項
- 參數含空白:必須用雙引號括起。例:
myapp.exe "hello world" foo → argv[1]="hello world", argv[2]="foo"。
argc 至少為 1(含程式名)。
argv 字串儲存在唯讀記憶體,勿嘗試修改。
- 跨平台建議使用標準庫
std::vector<string> args(argv, argv+argc) 管理。
五、簡易參數解析器範例
#include
#include
#include