第6章 用函数合理组织程序

    函数是构成C++程序的基石,使用函数可以将程序分解成一个个的模块,每个模块实现一个相对独立的功能,这些模块相互联系,共同组成了完成某项任务的程序。在前几章给出的示例代码都是相对简单的程序,只有一个main()函数,实际上,随着问题规模的加大,要进行的操作和处理的变量会有很多,程序的复杂度很高,如果程序不分模块,所有的操作都在main()函数内完成,会使程序变成一团乱麻。因此,函数是合理组织过程式程序的有效手段。

    本章主要涉及以下知识点。

    ❑模块化的优点:介绍什么是函数及如何实现函数。

    ❑函数的定义:介绍什么是函数头、函数体及如何定义。

    ❑函数的声明:介绍函数声明的重要性及如何声明一个函数。

    ❑函数的调用:介绍参数的几种传递方式及内联函数。

    ❑函数的重载:介绍函数重载如何使用及其实现。

    ❑C++的内存使用:介绍自动与静态存储。

    ❑作用与可见域:介绍变量及函数的作用和可见域。

    6.1 模块化带来的好处

    从软件工程的角度来说,降低程序复杂性的有效方法是合理的模块化和局部化。在设计一个复杂的程序时,往往需要把整个程序划分为若干个功能较为单一的模块,分别予以实现,再把所有的模块像搭积木一样搭起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法。在C++中,这些模块就是一个个的函数,函数也是C++构造程序的重要的基本单位。

    注意

    语句是构成程序的最基本单位,函数也是由语句构成的。从程序设计的角度来说,函数(一系列语句)常被当成一个整体来看,这就降低了程序的复杂性。

    6.1.1 函数的调用过程

    在前面的学习中大家已经熟悉了main()函数,一个C++程序里包含一个主函数,即main()函数和若干个其他函数,main()函数处于最顶层,其他函数作为其下层模块,main()函数调用其他函数,其他函数之间也可以互相调用。图6.1为一个C++程序的模块结构图,程序的执行过程为ABCDEFGHIJKM。

    任何一个C++程序都是从main()函数开始执行,而且是只执行main()函数,从main()的前花括号开始,到main()的后花括号为止。在此过程中,如果碰到函数调用语句(如图6.1中的“函数1;”),便暂时中断main()的执行,将程序流程转到被调用函数(对应图6.1中的B),执行完被调用函数或遇到return语句则返回main()函数(对应图6.1中的H),继续执行,一个函数也可以调用其他函数(如图6.1中函数1调用函数3),这时的调用过程与main()函数调用其他函数过程类似,常称为函数嵌套。

    注意

    通过函数合理组织程序,将要完成的任务进行有效分割,能大大降低程序开发的复杂度,写出容易修改和维护的高质量代码。