【C语言】命令行参数

gcc main.c add.c -o app

上面这样一个命令你是否感到很疑惑,这句话为什么这么写?它是怎么执行的呢?

其实 gcc 本身是一个可执行文件,后面的所有内容作为这个可执行文件的命令行参数传递进来,然后去执行文件,这就是这个命令实现的原理。

这篇文章来帮大家去认识一下什么是命令行参数,它是怎么使用的。

传递命令行参数

上面这些参数是怎么传入进来的呢?C 的 main 函数是具有两个形参的,第一个 argc,代表命令行参数的数目,第二个参数是 argv,指向了一组参数值,这些参数值是通过指针的方式存储在 argv 指向的数组中的。也就是说 argv 本质上是一个指向一个指针数组的指针。

int main(int argc, char **argv);

例如:cc -c -i main.c insert.c -o test 得到的参数如下。

注意指针数组:这个数组的每个元素都是一个字符指针,数组的末尾是一个 NULL 指针。argc 的值和这个 NULL 值都用于确定实际传递了多少个参数。argv 指向数组的第 1 个元素,这就是它为什么被声明为一个指向字符的指针的指针的原因。 

还需要注意,就是 argv 里面的第一个参数是程序的名称,将自己的名称传入自己的程序有什么用呢?由于程序是知道自己的名字的,所以这个值通常被忽略掉。但是也有一些特殊的场景,程序会选择不同的选项进行程序运行。例如说 UNIX 系统中列出目录文件的命令 ls。当他以 ls 运行时,就会产生文件的简单列表;当他以 l 运行的时候,就会产生一个多列的简单列表;当他以 ll 启动时,就会产生一个文件的详细列表。程序会对第一个名字进行检查,确定去执行哪部分程序。

下面给大家一个简单的例子,去理解一下具体是怎么去处理参数的。

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("参数数量: %d\n", argc);
    for (int i = 0; i < argc; i++) {
        printf("第 %d 个参数: %s\n", i, argv[i]);
    }
    return 0;
}

编译:gcc main.c -o app

输入:./app a b c

输出:参数数量:4

           第 1 个参数:a

           第 2 个参数:b

           第 3 个参数:c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值