C/C++ | int main(int argc,char* argv[])详解 | argc/*argv[] |

本文解析了UNIX和Linux中main函数的参数argc和argv的作用及使用方法,并通过一个示例程序展示了如何获取并打印命令行参数。

转载

main(int argc, char *argv[])_pix_csdn的博客-优快云博客

int main(int argc,char* argv[])

int main(int argc,char* argv[])是UNIX和Linux中的标准主函数.

  • argc:用来统计运行时发送给main函数的命令行参数的个数;
  • argv[ ]:其中每个元素都是上述参数(以字符串形式存储)的首地址;其中:
    • argv[0]指向程序运行的全路径名;
    • argv[1]指向程序名后的第一个参数;
    • argv[2]指向程序名后的第二个参数;
    • argv[argc]为NULL.

编译器生成的可执行文件,main()函数不是真正的入口,而只是一个标准的函数,可执行文件才是入口.

实例

(假设编译后为test.exe)

#include <stdio.h>
 
int main(int argc, char* argv[]) {
    printf("%d\n", argc);
    while(argc)
        printf("%s\n", argv[--argc]);
    return 0;
}

生成可执行文件后, 在命令行进入可执行文件的目录, 输入:

> test.exe start hello

得到的输出结果为:

3
hello
start
test.exe
### 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. **实际应用案例** 命令行参数常被用来配置程序的行为模式、指定输入数据源或其他动态调整选项。例如,在图像处理软件中可以通过命令行指定要打开的图片文件路径以及所需的滤镜效果。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值