main函数的一般形式如下:
- main()
从上面会发现main函数是没有参数的,那么,到底main函数能否有参数呢?实际上main函数可以是无参函数,也可以是有参函数。对于有参的形式来说,就需要向其传递参数。下面先看一下main函数的带参的形式。
- main(int argc,char *argv[])
从函数参数的形式上看,包含一个整型和一个指针数组。当一个C的源程序经过编译、连接后,会生成扩展名为.exe的可执行文件,这是可以在操作系统下直接运行的文件,对于main函数来说,其实际参数和命令是一起给出的,也就是在一个命令行中包括命令名和需要传给main函数的参数。命令行的一般形式为:
- 命令名 参数1 参数2……参数n
例如:
- d:\debug\1 hello hi yeah
命令行中的命令就是可执行文件的文件名,如语句中的d:\debug\1,命令名和其后所跟参数之间需用空格分隔。命令行与main函数的参数存在如下的关系。
设命令行为:
- file1 happy bright glad
其中,file1为文件名,也就是一个由file1.c经编译、连接后生成的可执行文件file1.exe,其后各跟3个参数。以上命令行与main函数中的形式参数关系如下:
参数argc记录了命令行中命令与参数的个数(file1、happy、bright、glad),共4个,指针数组的大小由参数的值决定,即为char *argv[4],该指针数组的取值情况如图11.37所示。
利用指针数组作为main函数的形参,可以向程序传送命令行参数。
参数字符串的长度是不定的,参数字符串的长度不需要统一,且参数的数目也是任意的,并不规定具体个数。
图11.37 指针数组取值 |
下面通过例11.23具体看一下带参的main函数如何使用。
实例位置:光盘 \MR\ Instance\11\11.23
【实例11.23】 输出main函数的参数内容
- #include<stdio.h>
- main(int argc,char *argv[]) /*main函数为带参函数*/
- {
- printf("the list of parameter:\n");
- printf("命令名:\n");
- printf("%s\n",*argv);
- printf("参数个数:\n");
- printf("%d\n",argc);
- }
运行结果如图11.38所示。
图11.38 输入命令行 |