C++中main函数通过argc和argv获取命令行参数:argc为非负整数,表示总参数个数(含程序名),至少为1;argv是char*数组,argv[0]为程序名,argv[1]至argv[argc-1]为用户参数,argv[argc]为空指针。

在C++中,命令行参数通过main函数的两个形参获取:整型argc(argument count)和字符指针数组argv(argument vector)。它们不是可选的扩展功能,而是标准C++程序启动时由操作系统自动传递的必要接口。
argc 表示参数个数,包含程序名本身
argc 是一个非负整数,代表命令行中输入的**总参数个数**。注意:第一个参数(argv[0])固定是程序的路径或名称,因此即使不带任何额外参数,argc 至少为 1。
- 运行
./myapp→argc == 1 - 运行
./myapp -v --input data.txt→argc == 4(argv[0]到argv[3]) - 不要假设
argc > 1就安全访问argv[1];必须先判断大小
argv 是指向C风格字符串的指针数组
argv 类型为 char* argv[](等价于 char** argv),每个元素是一个以\0结尾的C字符串。这些字符串由系统在程序启动时分配并初始化,生命周期覆盖整个main函数执行期。
-
argv[0]是程序被调用时使用的路径/名称(可能含目录,也可能只是basename) -
argv[1]到argv[argc-1]是用户输入的其余参数,顺序严格对应命令行书写顺序 -
argv[argc]总是空指针(nullptr),可用作遍历终止条件
常用处理模式:简单遍历与基本解析
对多数工具类程序,直接遍历 argv 并用 std::string 或 strcmp 判断即可。不需要第三方库也能完成常见任务。
立即学习“C++免费学习笔记(深入)”;
- 用
for (int i = 1; i 跳过程序名,处理用户参数 - 用
std::string arg(argv[i])转为现代C++字符串,便于比较和操作 - 检测开关参数如
-h或--help时,注意前缀匹配逻辑(例如arg == "-h" || arg == "--help") - 提取选项值:若
argv[i]是"-o",则下一个参数argv[i+1](需检查i+1 )通常是其值
注意事项与常见误区
看似简单,但几个细节容易引发未定义行为或逻辑错误:










