清华大学出版社 TSINGHUA UNIVERSITY PRESS 第八章
第八章
清华大学出版社 TSINGHUA UNIVERSITY PRESS ●本章要点 函数的概念 函数的定义与调用 函数的递归调用 变量的作用域 ·函数的作用域 C程序设计(第三版) http://ccf.tsinghua.edu.cn
C程序设计(第三版) http://ccf.tsinghua.edu.cn 2 ⚫ 本章要点 • 函数的概念 • 函数的定义与调用 • 函数的递归调用 • 变量的作用域 • 函数的作用域
清华大学出版社 ●主要内容 8.1概述 8.2函数定义的一般形式 8.3函数参数和函数的值 8.4函数的调用 8.5函数的嵌套调用 8.6函数的递归调用 8.7数组作为函数参数 88局部变量和全局变量 8.9变量的存储类别 810内部函数和外部函数 C程序设计(第三版) http://ccf.tsinghua.edu.cn
C程序设计(第三版) http://ccf.tsinghua.edu.cn 3 ⚫ 主要内容 8.1 概述 8.2函数定义的一般形式 8.3函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6函数的递归调用 8.7数组作为函数参数 8.8 局部变量和全局变量 8.9变量的存储类别 8.10 内部函数和外部函数
清华大学出版社 TSINGHUA UNIVERSITY PRESS 8.1概述 个C程序可由一个主函数和若干个其他函数 构成。一个较大的程序可分为若干个程序模块, 每一个模块用来实现一个特定的功能。在高级语 言中用子程序实现模块的功能。子程序由函数来 完成。 函数间的调用关系:由主函数调用其他函数 其他函数也可以互相调用。同一个函数可以被 个或多个函数调用任意多次 C程序设计(第三版) http://ccf.tsinghua.edu.cn 4
C程序设计(第三版) http://ccf.tsinghua.edu.cn 4 8.1 概述 一个C程序可由一个主函数和若干个其他函数 构成。一个较大的程序可分为若干个程序模块, 每一个模块用来实现一个特定的功能。在高级语 言中用子程序实现模块的功能。子程序由函数来 完成。 函数间的调用关系:由主函数调用其他函数, 其他函数也可以互相调用。同一个函数可以被一 个或多个函数调用任意多次
清华大学出版社 TSINGHUA UNIVERSITY PRESS main a C e g e g C程序设计(第三版) http://ccf.tsinghua.edu.cn 5
C程序设计(第三版) http://ccf.tsinghua.edu.cn 5
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例8.1先举一个函数调用的简单例子 include void maino void printstarO;/对 printstar函数声明* void print message;/对 print message函数声明* printstar( /*调用 printstar函数*/ print messageD;调用 print message函数* printstar(; /*调用 printstarl函数 C程序设计(第三版) http://ccf.tsinghua.edu.cn 6
C程序设计(第三版) http://ccf.tsinghua.edu.cn 6 例8.1先举一个函数调用的简单例子 # include void main() { void printstar(); /*对printstar函数声明*/ void print_message(); /*对print_message函数声明*/ printstar(); /*调用printstar函数*/ print_message(); /*调用print_message函数*/ printstar(); /*调用printstar函数*/ }
清华大学出版社 TSINGHUA UNIVERSITY PRESS void printstar(0)/*定义 printstar函数*/ printf(*******s*******In"); void print message/*定义 print message函数*/ printf(" How do you do! n); 运行情况如下: 米米米米米米米水米米米米米米米 How do you do C程序设计(第三版) http://ccf.tsinghua.edu.cn
C程序设计(第三版) http://ccf.tsinghua.edu.cn 7 void printstar() /*定义printstar函数*/ { printf("* * * * * * * * * * * * * * * *\n"); } void print_message() /*定义print_message函数*/ { printf("How do you do!\n"); } 运行情况如下: * * * * * * * * * * * * * * * * How do you do! * * * * * * * * * * * * * * * *
清华大学出版社 TSINGHUA UNIVERSITY PRESS 说明: (1)一个C程序由一个或多个程序模块组成,每 个程序模块作为一个源程序文件。对于较大的程 序,通常将程序内容分别放在若干个源文件中, 再由若干源程序文件组成一个C程序。这样便于分 别编写、分别编译,提高调试效率。一个源程序 文件可以为多个C程序公用。 C程序设计(第三版) http://ccf.tsinghua.edu.cn
C程序设计(第三版) http://ccf.tsinghua.edu.cn 8 说明: (1)一个C程序由一个或多个程序模块组成,每一 个程序模块作为一个源程序文件。对于较大的程 序,通常将程序内容分别放在若干个源文件中, 再由若干源程序文件组成一个C程序。这样便于分 别编写、分别编译,提高调试效率。一个源程序 文件可以为多个C程序公用
清华大学出版社 TSINGHUA UNIVERSITY PRESS (2)一个源程序文件由一个或多个函数以及其他 有关内容(如命令行、数据定义等)组成。 个源程序文件是一个编译单位,在程序编译时 是以源程序文件为单位进行编译的,而不是以 函数为单位进行编译的。 (3)C程序的执行是从man函数开始的,如果在 main函数中调用其他函数,在调用后流程返回到 main函数,在mai函数中结束整个程序的运行。 C程序设计(第三版) http://ccf.tsinghua.edu.cn
C程序设计(第三版) http://ccf.tsinghua.edu.cn 9 (2) 一个源程序文件由一个或多个函数以及其他 有关内容(如命令行、数据定义等)组成。一 个源程序文件是一个编译单位,在程序编译时 是以源程序文件为单位进行编译的,而不是以 函数为单位进行编译的。 (3) C程序的执行是从main函数开始的,如果在 main函数中调用其他函数,在调用后流程返回到 main函数,在main函数中结束整个程序的运行
清华大学出版社 TSINGHUA UNIVERSITY PRESS (4所有函数都是平行的,即在定义函数时 是分别进行的,是互相独立的。一个函数 并不从属于另一函数,即函数不能嵌套定 义。函数间可以互相调用,但不能调用 main函数。main函数是系统调用的 C程序设计(第三版) http://ccf.tsinghua.edu.cn 10
C程序设计(第三版) http://ccf.tsinghua.edu.cn 10 (4)所有函数都是平行的,即在定义函数时 是分别进行的,是互相独立的。一个函数 并不从属于另一函数,即函数不能嵌套定 义。函数间可以互相调用,但不能调用 main函数。main函数是系统调用的