C/C++ 中的argc和argv的含义与使用方法

argc和argv介绍

argc 是argument count的缩写表示传入main函数中的参数个数,包括这个程序本身
argv 是 argument vector的缩写表示传入main函数中的参数列表,其中argv[0]表示这个程序的名字
详见知乎链接:https://zhuanlan.zhihu.com/p/267822985

总结

  1. argc(argument count) 记录了命令行输入参数的个数
  2. argv(argument value) 记录了命令行输入参数的内容(值),argv是一个指针,指向储存了命令行参数的字符数组

一般定义方法

  • int argc, char** argv

或者

  • int argc, char* argv[]

两者意思相同,只是一个从指针角度定义,一个从数组角度定义。本质上来说是: 数组名就是指向它首地址的指针

  • 只有字符串数组​(以 \0 结尾的字符数组)可以通过打印指针来打印整个数组的内容。
  • 对于其他类型的数组,直接打印指针只会打印指针的地址值,而不是数组的内容。
  • 字符串是以 \0 结尾的字符数组。
  • 标准库函数(如 printf 和 cout)在处理字符串时,会从指针指向的位置开始,逐个字符处理,直到遇到 \0 为止。
### C/C++ 中 `int argc` `char **argv` 的参数解析方法 在 C/C++ 编程语言中,`int main(int argc, char **argv)` 是程序入口函数的一种常见形式。其中: - `argc` 表示命令行参数的数量,它是一个整数,至少为 1(因为即使没有任何额外的参数,也会有程序本身的路径名作为默认参数)[^2]。 - `argv` 是一个指向字符串数组的指针,存储了所有传递到程序中的命令行参数。通常情况下,`argv[0]` 是程序的名字或者可执行文件的路径,而后续的元素则是用户输入的具体参数[^3]。 #### 示例代码展示 下面提供一段完整的 C++ 程序,用于演示如何解析并打印命令行参数的内容: ```cpp #include <iostream> int main(int argc, char **argv) { // 打印参数总数 std::cout << "Total number of arguments passed: " << argc << std::endl; // 遍历并打印每一个参数 for (int i = 0; i < argc; ++i) { std::cout << "Argument #" << i << ": " << argv[i] << std::endl; } return 0; } ``` 上述代码的功能如下: - 使用循环遍历从 `argv[0]` 到 `argv[argc-1]` 的所有参数,并逐一输出它们的。 - 输出的第一项通常是程序自身的名称或其绝对/相对路径[^1]。 #### 关键点说明 1. **`argc` 至少为 1** 即使未向程序传递任何显式的命令行参数,`argc` 的最小仍为 1,这是因为 `argv[0]` 总是指向程序的名称或启动该程序时使用的路径[^2]。 2. **`argv` 数组的特点** - 它是一个由字符指针组成的数组,每个指针对应于一个命令行参数。 - 最后的索引位置 `argv[argc]` 实际上是一个空指针 (`NULL`),这标志着参数列表的结束[^3]。 3. **实际应用案例** 命令行参数常被用来配置程序的行为模式、指定输入数据源或其他动态调整选项。例如,在图像处理软件中可以通过命令行指定要打开的图片文件路径以及所需的滤镜效果。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值