C中main(void)和main()之间的区别

Arc*_*hit 27 c program-entry-point

谁能告诉我之间的差异int main()int main(void)?为什么它们都工作,默认参数是int main()什么?

bma*_*ies 12

一般情况下没有区别.这不是'main()'的默认参数,因为它根本没有参数.

这是不寻常的情况.如果您自己编写了对main的调用,那么()将允许您传递任何您喜欢的参数,同时(void)会强制您将其传递给none.但是,对于99.99999999%的情况而言,这一点都不重要,这是运行时调用以启动程序的主要情况.运行时既不知道也不关心你是否写()(void).

如果您编写标准代码,int main(int argc, char **argv)您将获得命令行参数.

  • @Prasoon:是的,我知道.我仍然发现这个答案在C++中是正确的.另外,仅仅因为技术上存在C的差异并不意味着它是常用或重要的差异.因此,我认为这是一个很好的答案,值得投票. (2认同)

van*_*nza 8

main()允许您使用任意数量的参数调用main.main(void)强迫你在没有参数的情况下调用main.所以:

main(foo, bar);
Run Code Online (Sandbox Code Playgroud)

很好main()但不是main(void)- 编译器生成错误.

现在,如果你特别询问该计划的切入点,它并没有真正有所作为; 在任何一种情况下,您都不会拥有该程序的参数(argc,argv,envp).

  • +1 - 请注意`envp`是非标准扩展名. (7认同)