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

use*_*271 13 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() - 函数返回任何内容等.

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

Car*_*rum 23

无论main()或者void main()是标准C.前者被允许,因为它有一个隐含的int返回值,使它一样int main().main返回值的目的是将退出状态返回给操作系统.

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

int main(void)
Run Code Online (Sandbox Code Playgroud)

int main(int argc, char **argv)
Run Code Online (Sandbox Code Playgroud)

您正在使用的表单:int main()是一个旧样式声明,表示main需要一个未指定数量的参数.不要使用它 - 选择上述之一.

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

小智 13

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

int main()
int main(void)
int main(int argc, char* argv[])
Run Code Online (Sandbox Code Playgroud)

是:

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()也会编译.

希望有所帮助!

祝你好运,编码愉快