2013-09-21 57 views
10

我是C语言的初学者。任何人都可以用例子详细解释main(),int main(),void main(),main(void),void main(void),int main(void)如何在C语言中工作?就像我们在使用void main()时发生的情况一样,当我在简单的语言中使用int main()时会发生什么,等等。
我知道,但无法理解它做什么:int main()和void main()如何工作

  1. 的main() - 函数没有参数
  2. INT主要() - 函数返回int值
  3. 无效的主要() - 函数返回任何内容等

当我使用int main()返回0编写简单的hello world时,仍然给出了和使用void main()时相同的输出,所以它是如何工作的?它的应用是什么?

+5

'无效的主要()'主要是为您所使用的人谁不知道C语言写的很好的教科书指示有用。在你列出的表格中,只有'int main(void)'是有效的。 (它不是那么简单,但现在已经足够接近了。) –

回答

19

main()void main()都不是标准C.前者是允许的,因为它有一个隐含的int返回值,使其与int main()相同。 main返回值的作用是将exit status返回给操作系统。

在标准C,为main唯一有效的签名是:

int main(void) 

int main(int argc, char **argv) 

您正在使用的格式:int main()是一个古老的样式声明,表示main需要一个未指定参数数量。不要使用它 - 从上面选择一个。

+1

在简历中,它们只是允许向后兼容旧C代码,因为操作系统不需要退出状态。您总是应该在'main'中返回一个整数值。 – Jack

+2

@Jack:'void main()'不是为了向后兼容任何东西。首先引入'void'关键字的相同标准将'main'的返回类型定义为'int'。 –

+0

int main(int argc,const char ** argv,const char ** env) – dns

0

int main返回integer

void main回报nothing

8

如果你真的想了解ANSI C 89,我需要纠正你一两件事; 在ANSI C 89以下的功能之间的差异:

int main() 
int main(void) 
int main(int argc, char* argv[]) 

是:

int main()

  • 一个期望未知数目的未知类型的参数的函数。返回表示应用程序软件状态的整数。

int main(void)

  • 一个期望参数的函数。返回表示应用程序软件状态的整数。

int main(int argc, char * argv[])

  • 一个期望的参数和argv []参数的argc数的函数。返回表示应用程序软件状态的整数。

使用每个功能

INT主要(无效)

  • 你需要的时候你的程序不需要初始参数运行使用此功能/负载时,关于(从OS接收到的参数 - 不在程序中)。

INT主(INT ARGC,CHAR *的argv [])

  • 你需要的时候你的程序需要初始参数加载使用此功能(从OS接收的参数 - 出它自己的程序)。

关于void main()

在ANSI C 89,使用时void main和编译该项目作为-ansi -pedantic(在Ubuntu,EG) 您将收到一个警告,表明你的主要功能是void类型,而不是键入int,但您将能够运行该项目。 大多数C开发人员倾向于在其所有变体上使用int main(),但void main()也将进行编译。

希望有帮助!

好运和快乐编码

相关问题