argc 是 argument count的缩写,bai表示argv这个二级指针指向的du内存区域中保存的zhi由stub写入的有效命令行参dao数的个数.
argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要输入的main函数的参数个数是argc-1个。
main(int argc,char *argv[ ])
1.argc为整数
2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[][] ,argv是一个指针数组)
注:main()括号内是固定的写法。
在c语言编程中,经常可以看到如下的main函数声明:
int main(int argc, char *argv[])
那么argc和argv[ ]是干什么用的呢?
其中argc是外部输入的参数个数,argv[ ]是参数的字符串数组。光这么说大家可能不太明白,那我们来看一个示例,如下所示的C文件argtest.c
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("argc is %d\n",argc);
for(int i=0;i<argc;i++)
{
printf("argv[%d] is: %s\n",i,argv[i]);
}
return 0;
}
这几行代码比较简单,首先打印argc的值,然后打印出所有argv[ ]数组的字符串。
采用下面命令对c文件进行编译
gcc argtest.c -o argtest
编译后生成可执行文件argtest,执行下面的命令
./argtest
则程序输出结果为
argc is 1
argv[0] is: ./argtest
这表明在执行这个程序时,输入的参数只有一个,而且这个参数就是执行程序的这个命令。
执行下面的命令
./argtest 1234 abcd
- 则程序输出结果为
argc is 3
argv[0] is: ./argtest
argv[1] is: 1234
argv[2] is: abcd
这表明程序输入的参数有3个,命令的后面两个用空格分隔的字符串都传给了main函数。
通过argc和argv[ ]我们就可以通过命令向程序传递参数了。