argv与argv[ ]的探讨
我们看一下下面的程序,这个程序可能对每一个初学C的学生并不陌生。
/*main.c*/
#include<stdio.h>
int main(int argc,char *argv[])
{
printf("hello wrold!\n");
return 0;
}
我们用gcc来运行一下这个程序:
[root@localhost ~]# gcc main.c -o main
[root@localhost ~]# ./main
hello,wrold!
/*这个程序的功能只是输出 hello,wrold! 这句话。议论输出的结果是什么本身没什么意思,可是我们接下来要讨论的是 int argc,char *argv[] 这两个整型变量和字符型数组变量所表示的含义。接下来看下面的一段程序:*/
/*main.c*/
#include<stdio.h>
int main(int argc,char *argv[])
{
printf("argc=%d\n",argc);
printf("argv[0]=%s\n",argv[0]);
printf("argc[1]=%s\n",argv[1]);
printf("argv[2]=%s\n",argv[2]);
printf("argc[3]=%s\n",argv[3]);
printf("hello wrold!\n");
return 0;
}
/*同样,我们用gcc来运行一下这个程序:*/
[root@localhost ~]# gcc main.c -o main
[root@localhost ~]# ./main a1 b2 c3
argc=4
argv[0]=./main
argv[1]=a1
argv[2]=b2
argv[3]=c3
hello,wrold!
/*对比一下这两个程序,我们是不是下面的程序只是在多了几个printf()函数,printf()函数输出的正好就是main()函数中的参数int argc 和char *argv[]呢?对,在运行时候的这一段大家看到没有[root@localhost ~]# ./main a1 b2 c3,和上一个程序的运行有不同,在这里加了参数项 a1 b2 c3,这几个参数项在printf中有打印出来。然后我们来看为什么argc=4,argc表示的是统计用户在运行该程序是自己追加的字符串的个数,而argv[]则是把追加的字符串打印出来,gcc在打印的时候会默认为./main也是用户追加的字符串,所以统计出来的是argc=4,而不是3*/