int main()和void main()如何工作

时间:2013-09-21 02:23:49

标签: c void

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

  1. main() - 函数没有参数
  2. int main() - 函数返回int值
  3. void main() - 函数不返回任何内容等。
  4. 当我使用int main()返回0编写简单的hello world时,它仍然提供与使用void main()时相同的输出,那么它是如何工作的?它的应用是什么?

2 个答案:

答案 0 :(得分:23)

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 :(得分:11)

如果您真的想了解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[])

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

关于何时使用每个功能

  

int main(void)

  • 当你的程序不需要运行/加载的初始参数(从OS接收的参数 - 自己的程序之外)时,你需要使用这个函数。
  

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

  • 当您的程序需要加载初始参数(从OS接收的参数 - 自己的程序之外)时,您需要使用此功能。

关于void main()

在ANSI C 89中,当使用void main并编译项目AS -ansi -pedantic时(例如在Ubuntu中) 您将收到一条警告,指出您的main函数类型为void而不是int类型,但您将能够运行该项目。 大多数C开发人员倾向于在其所有变体上使用int main(),但void main()也会编译。

希望有所帮助!

祝你好运,编码愉快