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

我是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()时相同的输出,那么它是如何工作的? 它的应用是什么?

main()void main()都不是标准C.前者是允许的,因为它有一个隐式的int返回值,使它与int main()相同。 main的返回值的目的是将退出状态返回给操作系统。

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

 int main(void) 

 int main(int argc, char **argv) 

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

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

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

是:

int main()

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

int main(void)

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

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

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

关于何时使用每个function

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

希望有所帮助!

祝你好运,编码愉快