跳到主要内容

C 语言中的 main() 函数参数

作为 C 语言程序的入口 mian 函数很多时候会在启动的时候从外界传入一些参数到程序内部。

1. main 函数的参数

其实从函数角度的讲, mian 函数和其它函数没有什么特别之处。只不过这个函数是又操作系统直接引导的,在大多数的情况下是程序的入口。因此而显得特殊。

之前我们介绍的程序中都是没有参数的 mian 函数,这里我们看一下一般情况下 mian 函数的参数情况。

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

或者

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

这里面的第一个参数是参数的数量,第二个是包含参数的数组。第一个参数的数量其实就是第二参数数组中包含的参数的数量。

那么如何使用这个 main 函数的参数呢?

只要在启动程序的时候在后面依次用空格隔开需要传递进去的参数就可以了。

2. 示例

#include <stdio.h>

int main(int a, char \*b[])
{
printf("Arguments Count: %d\n", a);

for (int i = 0; i < a; ++i)
printf("Argment %d: %s\n", i, b[i]);
return 0;
}

程序中的变量名没有按照约定,因为这里是想给大家展示一下变量名是随意的,不会影响运行结果。因为很多书籍中没有这方面的说明,很容易给初学者造成困惑。这里只是 C 语言中。在有的时候会出现约定大于配置的情况。这个不在 C 语言课程的讨论范围内。

运行结果:

utopia@DESKTOP:~$ ./test
Arguments Count: 1
Argment 0: ./test

utopia@DESKTOP:~$ /home/utopia/test
Arguments Count: 1
Argment 0: /home/utopia/test

utopia@DESKTOP:~$ ./test a da sds
Arguments Count: 4
Argment 0: ./test
Argment 1: a
Argment 2: da
Argment 3: sds

这段程序首先直接打印出变量 a 的数值,也就是传入 main 函数的变量的数量。然后采用循环方式,一次输出数组中存储的值。

从上面的运行结果可以看出。作为第一个变量传入的是程序的名称。其余变量在其后面依次传入。

3. 小结

作为整个程序的门户, main 函数肩负着将启动命令行中的参数传入程序内部的任务。

没有额外参数输入的情况,默认传入的参数只有一个,就是程序的名称名称,其实更确切一点包含前面路径的程序名称。

如果在命令行启动的时候输入了其它的参数,那么这些参数会依次进入参数数组中。

4. 参考文献

  1. Command line arguments in C/C++
  2. 10.2. Arguments to main
  3. How to write a good C main function