在C中使用“void”

我很困惑为什么我们需要将void传递给C函数:

 int f(void) { return 0; } 

 int f() { return 0; } 

做什么是正确的,为什么?

在C中, int f()是旧式声明。 它说f期望一个固定但未指定的数字和类型的参数。 例如,给定int f() { return 0; } 编译器不会抱怨f(42)f("hello, world") (尽管这种调用的行为是未定义的)。

int f(void)明确表示f不带参数。

(C ++有不同的规则; Stroustrup并不关心与旧C代码的向后兼容性。)

这是C的遗迹。

f(void)不带参数,因此f(1)无效。

f()表示参数未指定,因此f(1)在此处有效。

在这种情况下的void仅仅意味着“没有参数”。 我不确定你的第二个案例是否会编译,但无论哪种方式,我都希望第一个案例尽可能清楚。 当然,在调用f ,只需使用空括号:

 int x = f();