清华大学出版社 TSINGHUA UNIVERSITY PRESS 第八章
第八章
清华大学出版社 TSINGHUA UNIVERSITY PRESS ●本章要点 函数的概念 函数的定义与调用 函数的递归调用 变量的作用域 ·函数的作用域
⚫ 本章要点 • 函数的概念 • 函数的定义与调用 • 函数的递归调用 • 变量的作用域 • 函数的作用域
清华大学出版社 ●主要内容 §8.1概述 §8.2函数定义的一般形式 §8.3函数参数和函数的值 §8.4函数的调用 §8.5函数的嵌套调用 §8.6函数的递归调用 §8.7数组作为函数参数 §88局部变量和全局变量 §8.9变量的存储类别 §8.10内部函数和外部函数
⚫ 主要内容 § 8.1 概述 § 8.2函数定义的一般形式 § 8.3函数参数和函数的值 § 8.4 函数的调用 § 8.5 函数的嵌套调用 § 8.6函数的递归调用 § 8.7数组作为函数参数 § 8.8 局部变量和全局变量 § 8.9变量的存储类别 § 8.10 内部函数和外部函数
§8.1概述 w-个较大的程序可分为 若干个程序模块,每 main 个模块用来实现一个特 定的功能。在高级语言 中用子程序实现模块的 功能。子程序由函数来 完成。一个C程序可由 d山‖个主函数和若千个其 函数构 函数间的调用关系 e g 白主函数调用其他函数,其他函数也可以互相调用。 同一个函数可以被一个或多个函数调用任意多次
§8.1概述 一个较大的程序可分为 若干个程序模块,每一 个模块用来实现一个特 定的功能。在高级语言 中用子程序实现模块的 功能。子程序由函数来 完成。一个C程序可由 一个主函数和若干个其 他函数构成。 由主函数调用其他函数,其他函数也可以互相调用。 同一个函数可以被一个或多个函数调用任意多次。 函数间的调用关系
例8.1先举一个函数调用的简单例子s include void maino void printstar (; 对 printstar函数声明*/ void print message; 对 print message函数声明* printstar(; /*调用 printstarl函数*/ print message;/调用 print message函数*/ printstaro /*调用 printstar函数*/
# include void main() { void printstar(); /*对printstar函数声明*/ void print_message(); /*对print_message函数声明*/ printstar(); /*调用printstar函数*/ print_message(); /*调用print_message函数*/ printstar(); /*调用printstar函数*/ } 例8.1先举一个函数调用的简单例子
华大学出版社 eM山AA| UEDCITV DDCOO void printstar(/*定义 printstar函数*/ printf( void print message0/*定义 print message函数*/ printf( How do you do!n") 运行情况如下: How do you do d****************
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程序公用
说明: (1)一个C程序由一个或多个程序模块组成, 每一个程序模块作为一个源程序文件。对较 大的程序,一般不希望把所有内容全放在一 个文件中,而是将他们分别放在若干个源文 件中,再由若干源程序文件组成一个C程序。 这样便于分别编写、分别编译,提高调试效 率。一个源程序文件可以为多个C程序公用
(2)一个源程序文件由一个或多个函数以及 其他有关内容(如命令行、数据定义等)组成 。一个源程序文件是一个编译单位,在程序编 译时是以源程序文件为单位进行编译的,而不 是以函数为单位进行编译的 (3)C程序的执行是从main函数开始的 ,如是在main函数中调用其他函数,在调 用后流程返回到main函数,在main函 数中结東整个程序的运行
(2)一个源程序文件由一个或多个函数以及 其他有关内容(如命令行、数据定义等)组成 。一个源程序文件是一个编译单位,在程序编 译时是以源程序文件为单位进行编译的,而不 是以函数为单位进行编译的。 (3)C程序的执行是从main函数开始的 ,如是在main函数中调用其他函数,在调 用后流程返回到main函数,在main函 数中结束整个程序的运行
清华大学出版社 TSINGHUA UNIVERSITY PRESS (4)所有函数都是平行的,即在定义函数时 是分别进行的,是互相独立的。一个函数并不 从属于另一函数,即函数不能嵌套定义。函数 间可以互相调用,但不能调用main函数。 main函数是系统调用的
(4) 所有函数都是平行的,即在定义函数时 是分别进行的,是互相独立的。一个函数并不 从属于另一函数,即函数不能嵌套定义。函数 间可以互相调用,但不能调用main函数。 main函数是系统调用的
清华大学出版社 TSINGHUA UNIVERSITY PRESS (5)从用户使用的角度看,函数有两种: ①标准函数,即库函数。这是由系统提供的 ,用户不必自己定义这些函数,可以直接使 用它们。应该说明,不同的C系统提供的库函 数的数量和功能会有一些不同,当然许多基 本的函数是共同的。 ②用户自己定义的函数。用以解决用户的专 门需要
(5)从用户使用的角度看,函数有两种: ① 标准函数,即库函数。这是由系统提供的 ,用户不必自己定义这些函数,可以直接使 用它们。应该说明,不同的C系统提供的库函 数的数量和功能会有一些不同,当然许多基 本的函数是共同的。 ② 用户自己定义的函数。用以解决用户的专 门需要