[C++] 我们常用的main()函数到底是什么?

来源:互联网 发布:java开发界面化软件 编辑:程序博客网 时间:2024/05/06 07:44
“学习C++是一次探索之旅。”

之前本科的时候也上过C++的必修课,并且取得了不错的成绩,但是,总觉得自己的C++学习的还不够透彻,于是最近打算通读一遍Stephen Prata教授的C++Primer Plus,以此来巩固一下自己的C++知识。为了更好的加深理解,博主会不定期更新有关C++Primer Plus的学习笔记,文中若有产生疑问或者不对的地方,欢迎大家和我讨论。
  1. main函数与操作系统的关系
    对于刚刚开始学习C或C++的朋友,可能都知道在程序时候,必须定义一个main()函数作为我们程序的主体,但是虽然大部分都知道要这么做,但是却不知道为什么这么做。一般来说,C++中的大多数函数在诞生之初就是为了被其它的函数调用而存在的,在程序编写过程中,我们总会在main函数中调用许多库函数或是自定义的函数,但是,我们有没有想过,谁来调用main函数呢?
    实际上,main()通常会被启动代码调用,而启动代码是有编译器添加到程序中的,是程序和操作系统(linux,unix,windows等等)之间的桥梁。所以main函数的函数头描述的是main()和操作系统之间的接口。
    但是,需要注意的是,main不是关键字,因为它不是语言的组成部分,所以它可以做变量名,但最好别这样,这会引起其他错误。
  2. main函数在C++中的使用
    在C++中,我们可以在main函数的参数列表中用void明确指出,该函数不接受任何参数,如:int main( void ) ,我们也可以空着不填任何参数:int main()。对于C++来说,用void和空着不填完全等价,或许你会觉得这是理所应当,但是在C中,让括号空着却意味着对于是否接受参数保持沉默,而不是不接受任何参数。
    另外,新的C++标准中,如果编译器到达main()函数末尾时没有遇到返回语句,则自动添加return 0语句 (只对main函数有效),这意味着我们不需要每次写main函数时都要手动添加一个返回语句return 0; 。
  3. 有些编程环境提供一个框架程序,它会调用一些非标准函数,如_tmain() ,这种情况下,会有一个隐藏的main()来调用_tmain()。
原创粉丝点击