我们在C语言中经常看到的main函数都是不带参数的,因此main函数后面都是空括号,形如 int main() 这类。但实际上main函数是可以带参数的,这个参数可以认为是main函数的形式参数。
C语言规定main函数后面的参数只能有两个,习惯上写成argc和argv。所以就出现了标题上见到的形式:int main(int argc, const char *argv[])。
argc
第一个形参argc必须是整型变量,代表命令行总的参数个数。
argv
第二个形参argv必须是是指向字符串的指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。指针数组的长度即为参数个数argc。
示例
给一个如下的C语言程序,叫做test.c
代码语言:javascript复制#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char *argv[])
{
if(3 > argc)
{
printf("请喂我更多的参数啦!");
goto __RETURN;
}
printf("*argv0=%srn",argv[0]);//rn是换行
printf("*argv1=%srn",argv[1]);
int b = atoi(argv[2]);//字符串转整型
printf ("*argv2=%d",b);
__RETURN:
return 0;
}
通过icc将test.c编译成可执行文件a.out后,在命令行输入:
代码语言:javascript复制[zhxia@ess ~/zhxia] $ ./a.out 3 2 21 3
得到输出如下:
代码语言:javascript复制*argv0=./a.out
*argv1=3
*argv2=2
分析
在上面这个示例中, argc=5 argv[0]指向'./a.out' argv[1]指向'3' argv[2]指向'2' argv[3]指向'21' argv[4]指向'3'