吾爱程序员:这里有好玩的游戏和软件
当前位置:首页C语言教程 → C/C++ 中“int main()”和“int main(void)”的区别?

C/C++ 中“int main()”和“int main(void)”的区别?

来源:网络 | 更新时间:2022-01-07 23:17:36
考虑以下 main() 的两个定义。
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++ 中, fun() 和 fun(void) 是相同的。 所以区别在于,在 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);
}
}
 

最新文章

热点资讯

手游排行榜

CopyRight 2020-2030吾爱程序员

鄂ICP备2021004581号-8

本站资源收集于网络,如有侵权请联系我们:35492删除0109@qq.com