用空参数列表主要与void的参数列表不同吗?

Jos*_*Lee 10 c program-entry-point void

可能重复:
为什么C和c ++中的main函数的类型留给用户定义?

什么是虚空?有人提供一些例子,正确使用虚空吗?当我们写void main (void)或有main()什么区别?

Omk*_*ant 12

在C中,通常(void)意味着函数调用中不需要参数,而()意味着参数的数量不明确.

例如

void foo(void)
{
   // body
}

void bar()
{
    //body
}
Run Code Online (Sandbox Code Playgroud)

在呼唤环境时,

foo();  // Correct 
foo(1); // Incorrect
bar();  // Correct
bar(1); // Also correct
Run Code Online (Sandbox Code Playgroud)

这是一般性的解释.

但对于main()的情况,C99标准说,

5.1.2.2.1程序启动

程序启动时调用的函数名为main.该实现声明此函数没有原型.它应该使用int的返回类型定义,并且没有参数: int main(void) { /* ... */ }

要么

有两个参数(这里称为argc和argv,虽然可以使用任何名称,因为它们是声明它们的函数的本地名称): int main(int argc, char *argv[]) { /* ... */ }或等效的;

要么

在其他一些实现定义的方式.

所以,在这个void main(void)返回类型应该是int.

最后,因为main(),返回类型没有给出,所以隐式返回类型int.


归档时间:

查看次数:

35492 次

最近记录:

7 年,3 月 前