在刚开始学习C语言时,你一定对main函数的形式有点迷惑,我第一次看到这种形式是在国外那本被誉为C语言圣经的《C语言程序设计》。
原形如下:
#include <stdio.h>
int main(int argc, char ** argv)
{
return 0;
}
如果你最开始是在VC6.0这种带有界面GUI的编译器中写代码的话,可能理解起来稍有难度,当然你在VC6.0编译之后会生成一个exe文件,在命令行执行的话可以看到argc和argv的作用.
这两个参数的作用: argc 是指命令行输入参数的个数(以空白符分隔) ,argv存储了所有的命令行参数 .
参考如下程序main.c:
#include <stdio.h>
int main(int argc, char * argv[])
{
int i;
for (i=0; i < argc; i++)
printf("Argument %d is %s.\n", i, argv[i]);
return 0;
}
首先我们gcc -o main main.c
然后执行./main first second third fourth
由于第二个参数char *argv[]是一个指向命令行参数的指针数组,每一个参数都是以空字符null作为结束的字符串。另一种实现方式如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
char **p;
for(p = argv;*p != NULL;p++)
{
puts(*p);
}
return 0;
}
涉及到命令行参数的程序,在gdb调试时如何传入参数呢?
gdb 可执行文件名
set args 命令行参数1 命令行参数2 命令行参数3 命令行参数4 命令行参数5
演示如下所示:
p *argv@6 打印包含程序名在内的所有内容.