ANSI C标准中,定义的主函数只有两种原形:
int main(void);
int main(int argc, char* argv[]);
前者的void显式地表示不接受任何参数,可以简化为int main();(但在C语言中语义有所区别:括号中不含任何内容,在C中表示可以接受任何参数,在C++中表示不接受任何参数);
后者的形参列表是命令行参数个数和命令行参数,通过命令行传入程序,等价于int main(int argc, char** argv);。
以上两种等价写法在ISO C++标准中有定义。其它的写法都不是C语言标准中定义的(当然,形参变量名可以改变)。
void main();是错误的写法,任何版本的标准中都不曾定义。只是目前的一些编译器为了兼容标准制订前的旧代码才没有出现编译错误。可能是因为某些不良教材的缘故,许多人习惯于传播这种非标准写法。
另外有些编译器有多于两个形参变量的扩展,例如附加参数char* envp[]表示环境变量。
int返回值传递给操作系统,语义为:零表示正常,非零表示出现了某种错误。
典型的最简程序:
int main()
{
return 0;
}
或
int main(int argc, char* argv[])
{
return 0;
}
(C++中,省略return的话会自动当作最后存在return 0;语句。)
----
[原创回答团]
参考资料:原创
本回答被提问者采纳