即使到了2013年的今天,还是能看到在C语言中void main()这种写法。也许是被VC++ 6宠坏了,也许是被谭浩强的《C语言程序设计》误导了(谭的第四版已使用int main()写法)。不必纠结void main()历史成因,只用接受main的正确写法。

在C语言中,正确的main函数写法只有两种:

无参数的:

int main(void){/*...*/}

或者两个参数的:

int main(int argc, char *argv[]){/*...*/}

当然,参数名称可以自定义。

这两种方式在C语言标准C11(ISO/IEC 9899:2011)的5.1.2.2.1 Program startup处说明,C99(ISO/IEC 9899:1999)中的规定相同,如图:C11 Program startup

需要注意的是,C++中,int main()等价于int main(void),有参数的写法相同。但是请注意,这是C++的写法,C和C++是两种语言。