C语言中主函数 int main()和 void main()的区别?

C语言中主函数 int main()和 void main()的区别?

两个都不是标准的C语言主函数写法

首先来看看标准的主函数写法是什么样的,在C99标准(ISO/IEC 9899:1999)的5.1.2.2.1 Program startup一节是这么描述的:

也就是上面黑体的两种写法算是标准的主函数写法。

因为main要返回给调用者一个值,所以void main是肯定不行的,即使编译通过了,编译器也会返回给系统一个值然后报一个warning。

至于int main(),虽然明确了返回值,但是参数列表却是空的,在C语言里面跟C++有个区别就是对于参数列表为空的时候,C++表示这个函数没有参数,而C语言却表示这个函数可以传任意参数。所以在C语言里面当一个函数不需要参数的时候都要明确加上void