有些c程序的main函数参数里经常会出现int argc, char const *argv[],如下:
#include <stdio.h>
int main(int argc, char const *argv[])
{
return 0;
}
这是什么意思呢。
从类型上看,第一个参数是一个整型,第二个是一个字符串数组,这代表什么呢?
实际上,这是c语言入口函数main特有的一个特性。argc和argv的意思是:
- argc:表示命令行参数的数量(argument count),即程序运行时传递给程序的参数个数,包括程序名称本身。在调用程序时,至少会有一个参数,即程序的名称。
- argv[]:是一个指向字符串数组的指针(argument vector),每个元素是一个指向传递给程序的参数的字符串指针。
举个例子:
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("%c\n",argc);
for(int i=0;i<argc;i++){
printf("%s\n",argv[i]);
}
return 0;
}
terminal:
编译:gcc test.c -o test
运行: ./test a ab abc
输出:
4
./test
a
ab
abc
你会发现你明明输入3个参数a,ab,abc,但argc却是4,原因是程序名称本身也会被作为参数传入进去。因此最终输出./test,a,ab,abc
当然改变argc和argv名称也是可以的,效果一样。
但是注意main函数的形参第一个一定要是int,第二个要是字符串数组,否则是不生效的。