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

本文讨论了C和C++中`int main()`与`int main(void)`的区别。在C++中,两者没有区别,但在C语言中,`int main(void)`明确指定了main函数不接受参数,而`int main()`则允许任意数量的参数。这种差异可能导致编译错误,特别是在涉及函数调用时。建议在C语言中使用`int main(void)`以增加清晰度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    考虑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);
	}
}

    答案:

4 3 2 1 

    问题2:

#include <stdio.h>
int main(void)
{
	static int i = 5;
	if (--i){
		printf("%d ", i);
		main(10);
	}
}

    答案:

编译报错
参考文档

[1]GeeksforGeeks.Difference between “int main()” and “int main(void)” in C/C++?[EB/OL].https://www.geeksforgeeks.org/difference-int-main-int-mainvoid/,2018-09-07.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值