【可乐教育】main函数的多种写法(可乐音乐教育) 99xcs.com

一、main( )

这种写法没有返回值,没有参数。

其实这种写法使用现在的编译器编译时会警告,但查了一下在C89标准中是可以的,而且由于函数没有显式声明返回类型那么编译器会将返回值默认为int的缘故,其返回值也为int。

二、void main( )

这种写法返回值为void,没有参数。

我一直比较好奇这种样式是怎么来的,main函数的返回值要作为程序退出的状态,声明为void在程序退出后,退出情况就不得而知了。查了C89/C99/C11相关文档,都没有提到任何这种写法的痕迹,我见过最多的写法就是这种,不清楚为什么有这么多初学者这么写。严格来说返回值为void是不正确的。

三、int main( )

这种写法返回值为int,没有参数。

这么写的人也不少,不过有一点要提醒一下大家:虽然声明没有参数,但是实际调用却可以传参,关于这个知识点就不多讲了。

四、int main(void)

这种写法返回值为int,参数为void。

这是最常见的一种写法了。形参为void,表明它在调用的时候不能传入任何参数,那么它也就不能获取命令行参数了。

五、int main(int argc,char *argv[])

这种写法返回值为int,有两个参数,第一个入参为命令行参数个数,第二个入参为命令行参数数组。

此种写法也比较常见,通常用于实现需要从命令行获取参数的功能。

六、int main(int argc,char *argv[],char *envp[]

这种写法返回值为int,有三个参数,分别为命令行参数个数,命令参数数组,环境变量数组。

实际上它就比第五个多一个参数,用于获取环境变量,但全局变量environ可以代替envp的作用 ,因这种形式的存在也是比较尴尬,不太建议。

久久小常识(www.99xcs.com)™