C语言的主函数,想必大家是用的最多写的最多的一个函数,由于长时间的影响,以及现在大多数编译器的默认,大家见到最多以及自己写的可能大多是这个样子:
int main() { return 0; }
而事实上,这个程序没有任何参数,原则上应该加上void,即明确告诉编译器没有任何参数,即这样:
int main(void) { return 0; }
而主函数的参数,如果有则为下面这个样子:
int main(int argc,char *argv[]) { return 0; }
这其实是主函数的较完整模样,它可以接收来自调用方法的外部传参,相互通信等。
什么意思呢,大家如果学完C语言的语法的话可以自己分析看懂了,第一个argc就是一个整形变量,表示传入主函数参数的个数,另一个argv呢其实是一个指针数组(即放指针的数组),用来存放多个外部参数。
我们可以写这样一个例子程序来进行试验理解,代码如下:
#include<stdio.h> int main(int argc,char *argv[]) { int i; printf("%d\n",argc); for(i=0;i<argc;i++) printf("%s\n",argv[i]); return 0; }
通过这个代码大家可以试图理解,其实int类型的argc就是传入main函数参数的个数,而argv就是存放这些参数的地方(当做字符串存在了数组里)。通过这个程序,我们就可以试验传入几个参数,看个个数、内容是否正确。
将这个程序编译后,别着急运行。先找到它的exe文件所在位置,注意它的路径
然后打开cmd控制台,将我们的exe程序拖入cmd窗口中,然后输入几个字符串作为参数,回车,结果如图:
大家可以看到,除了红框里是我们输入的以外,输出argc也就是参数的个数是4并且把这四个参数输了出来,分别是:
第0个: D:\Project\dotcpp\Debug\dotcpp.exe
第1个: This
第2个: is
第3个: www.dotcpp.com
注意,笔者是从0开始标记(argv的数组),而且一共是四个参数,除了我们输入的This is www.dotcpp.com这三个字符串以外(空格作为分隔),它包含exe程序本身的绝对路径!
这就是主函数的参数传递过程,看到这里,大家想必明白些了!
大家可以亲自上机实验,来验证结果,有问题随时留言!
C语言研究中心(www.dotcpp.com)