首页 文章

int main()和void main()如何工作[复制]

提问于
浏览
10

这个问题在这里已有答案:

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

  • main() - 函数没有参数

  • int main() - 函数返回int值

  • void main() - 函数返回任何内容等 .

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

2 回答

  • 20

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

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

    int main(void)
    

    int main(int argc, char **argv)
    

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

  • 10

    如果你真的想了解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() 也会编译 .

    希望有所帮助!

    祝你好运,编码愉快

相关问题