2.1.3 主函数
C++用函数组织过程,每个相对独立的过程都可组织成一个函数,程序一般由不同的函数按层次结构组织而成,因此,函数的定义是C++的主体,这里可先对函数有个大体的了解,详细的介绍和说明请参考第6章。
图 2.1 头文件新旧标准变化对比图
函数由函数头和函数体两部分组成,其基本结构如下代码所示。
返回值类型函数名(参数列表) { 语句1; 语句2; …… 语句N; return返回值; }
通常,C++函数被其他函数调用(激活),第一行“返回值类型函数名(参数列表)”称为函数头,定义了函数和调用其函数之间的接口,返回类型定义了从函数返回给调用函数的信息,参数列表描述的是从调用函数传递给被调用函数的信息。花括号之间的部分称为函数体,说明了函数应当执行的计算机指令,在C++中,一条完整的指令称为语句(Statement),每个语句都以分号结尾。
注意
忘掉语句结尾的分号是初学者常犯的错误,时刻提醒自己,不要省略分号。
花括号中的最后一条语句叫做返回语句(Return Statement),C++中用其标志着一个函数的结束。
本例中只有一个main()函数,称为主函数,该函数会自动被启动代码调用,而启动代码是在编译阶段由编译器添加到可执行文件中的,是程序与操作系统的桥梁。因此,main()函数是C++程序的入口,每个C++程序有且仅有一个main()函数,main函数在文件中的位置并没有特别的要求,它可以在文件的头部、中部或尾部,其基本形式如下所示。
int main() { ……//语句序列 return 0; }
main()函数的函数头表明:main()函数可以给操作系统返回一个int类型的值,且没有输入参数。实际上,main()函数可以接受操作系统传来的命令行参数,关于带参主函数与命令行参数的问题,在第7章中会作详细的介绍。
说明
有些参考书中使用void main()这样的函数头,并省略了返回语句,这在逻辑上是没有问题的,void意味着函数不返回任何值,但这样的写法不符合ANSI/ISO C++标准格式,在某些系统中可能无法正常运行,因此,建议使用符合标准的int main()函数头格式。有时读者也会碰到main()这样的函数头,采用这种定义方式时,当编译器到达main()函数的末尾而没有遇到返回语句时,则认为main()函数以“return 0;”结尾,这种写法也符合ANSI/ISO C++标准。