请考虑以下两个对MIN()的定义。
null
int main() { /* */ return 0; } |
和
int main( void ) { /* */ return 0; } |
有什么区别?
在C++中,没有区别,两者都是相同的。
这两个定义在C语言中也适用,但是第二个带有void的定义在技术上被认为更好,因为它明确规定了main只能在没有任何参数的情况下调用。 在C语言中,如果函数签名没有指定任何参数,这意味着可以使用任意数量的参数或不使用任何参数来调用函数。例如,尝试编译并运行以下两个C程序(记住将文件另存为.C)。注意fun()的两个签名之间的差异。
// Program 1 (Compiles and runs fine in C, but not in C++) void fun() { } int main( void ) { fun(10, "GfG" , "GQ" ); return 0; } |
上述程序编译和运行良好(参见 这 ),但以下程序编译失败(请参阅 这 )
// Program 2 (Fails in compilation in both C and C++) void fun( void ) { } int main( void ) { fun(10, "GfG" , "GQ" ); return 0; } |
不同于C,在C++中,上述两个程序编译失败。在C++中,Fund()和Fund(Valuy)都是相同的。
所以区别在于,在C中, int main() 可以用任意数量的参数调用,但是 内部主(空) 只能在没有任何争论的情况下调用。虽然在大多数情况下,使用“int main(void)”并没有什么区别,但在C语言中,使用“int main(void)”是一种推荐的做法。
练习: 预测下列各项的产出 C 程序。
问题1
#include <stdio.h> int main() { static int i = 5; if (--i){ printf ( "%d " , i); main(10); } } |
问题2
#include <stdio.h> int main( void ) { static int i = 5; if (--i){ printf ( "%d " , i); main(10); } } |
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END