Hei*_*kki 25 c program-entry-point
几个星期以来,我一直在以自学成才的方式学习C编程,而且我对这个main()功能有一些疑问.
所有函数必须在它们的函数原型中声明,然后在它们的定义中声明.为什么我们不必先main()在原型中声明该函数?
为什么我们要用int main()而不是void main()?
返回0在main()函数中完全做了什么?例如,如果我编写一个程序结束main()函数,会发生什么return 1;?
Fre*_*Foo 21
void main,但这是一个非标准的扩展(通常意味着"总是向操作系统返回零").Yu *_*Hao 18
1)所有函数必须在它们的函数原型中声明,然后在它们的定义中声明.为什么我们不必先在原型中声明main()函数?
不对.简单的例子:
void foo(){} //definition
int main()
{
foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
只有在调用一个函数但尚未看到定义时,才需要声明.这将永远不会发生,main因为它是该计划的明星.
2)为什么我们必须使用int main()而不是void main()?
因为标准是这样说的.(更准确地说,它在托管环境中是正确的,通常就是这种情况)
C99 5.1.2.2.1 程序启动
在程序启动时调用的函数被命名
main.该实现声明此函数没有原型.它应定义为返回类型int且没有参数:Run Code Online (Sandbox Code Playgroud)int main(void) { /* ... */ }或者有两个参数(这里称为
argc和argv,虽然可以使用任何名称,因为它们是声明它们的函数的本地名称):Run Code Online (Sandbox Code Playgroud)int main(int argc, char *argv[]) { /* ... */ }或同等学历; 或者以某种其他实现定义的方式.
3)在main()函数中返回0究竟做了什么?例如,如果我编写一个以返回1结束main()函数的程序会发生什么?
返回值表示程序的结果.通常0表示成功,而其他值表示不同类型的故障.