在刚开始学习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 打印包含程序名在内的所有内容.