对于一个标准的代来说如下
#include <stdio.h>
int main(int argv, char* argc[])
{
printf("argv is %d\n",argv);
return 0;
}
main中包含两个参数:
如上的代码则会打印出
则会输出argv is 1
那么问题来了 为什么是1呢?可以是其他的数值吗?答案是可以的。
其实对于linux操作系统来说,命令也可以是c语言编写的程序,既然是c编写的程序那么也有返回值的。
如何证明呢?
举个简单的例子。
如图当我们每加一个参数的时候对于同一个程序来说,argv的值都会加1;
对于argv来说,当命令执行的时候带有n个参数那么这个值就是n+1.
那么问题又来了,我们知道有几个参数,但是问题又来了。我们还要知道 每个参数是什么啊,
ok接下来我们编写另外一段代码
main3.c文件
#include <stdio.h>
int main(int argv, char* argc[])
{
printf("argv is %d\n",argv);
int i;
for(i=0;i<argv;i++){
printf("argc[%d] is %s\n",i,argc[i]);
}
return 0;
}
编译生成m3.out
执行如下的命令
执行的命令总共是5段。此时argv是5
后面指针数组 每一个元素则代表我们输入命令时的一个参数。
那么这些参数是很有用的。比如对于ls命令来说。
ls命令实质上也是c编写的一段c程序
此段c代码根据传入的参数。比如传入-a参数ls代码则根据a参数在ls程序里做判断 然后显示所有的文件。
传入-l参数则显示详细的文件参数。
这对编写c的代码非常重要。