在学习C语言时,一般常见的main函数是这样的
int main(void)
{
int a,b;
printf("please input a number:");
scanf("%d",&a);
printf("\nplease input another number:");
scanf("%d",&b);
printf("sum is %d\n");
return 0;
}
上面是个简单的求和函数,简单易懂,但有个缺点,程序运行时需要和用户交互(一次次询问输入数据),操作起来不便捷。能不能像shell命令行那样在调用函数时一次把参数都输进去呢?答案是有的
main函数可以带两个参数int argc, char *argv[] (名字可随意取,但类型必须一致,C语言规定)。因此原型如下 int main(int argc,char *argv[ ]).
其中:argc为参数个数(不需要用户输入,系统会根据后面输入参数的个数自动填充)
argv[] 则用以保存后续输入的参数,只能是char类型。个人感觉和shell的命令行很像
我们都知道main函数是入口函数,不能被其它任何函数调用,那么参数怎么传递进去呢?这个和shell很像,假设我有个可执行的test文件,在我执行它时,只要在后面空个格 依次输入参数就好了~
就像这样:test hello world !
这样一共有四个参数:文件名“test”和“hello””world” “!”
相应的argc为4。不需要调用时输入,系统会自动根据后面参数补上。
下面就测试下吧,代码如下:(测试环境:ubuntu)
int main(int argc, char *argv[])
{
int i;
printf("argc = %d\n",argc);//输出参数个数
printf("argv is :\n");//依次输出参数
for(i = 0;i < argc;i++)
printf("%s\n",argv[i]);
return 0;
}
文件保存为test_main.c。然后用gcc编译下
gcc -o test_main test_main.c
这样就生成了可执行的文件 test_main 了,执行./test_main 程序便运行
这个我虽然没有输入任何参数,但程序却获得了一个参数,argc = 1 argv[0] = “./test_main”。这就是刚才说的,文件名就是它的第一个参数。
然后执行./test_main Hello World ! 试试
四个参数,分别是:“./test_main”“Hello” “World”“!”
这样利用main的参数可以直接在调用命令时输入相应的参数,不用来回输入了 是不是很方便~