第5章模块化程序设计 5.1概述 5.7局部变量和全局变量 5.2函数定义的一般形式58动态存储变量与静态存储变量 5.3函数参数和函数的值59内部函数和外部函数 54函数的调用 5.10编译预处理 5.5函数的嵌套调用 511文件包含”处理 5.6函数的递归调用 5.12条件编译
第 5 章 模块化程序设计 5.1 概述 5.2 函数定义的一般形式 5.3 函数参数和函数的值 5.4 函数的调用 5.5 函数的嵌套调用 5.6 函数的递归调用 5.7 局部变量和全局变量 5.8 动态存储变量与静态存储变量 5.9 内部函数和外部函数 5.10 编译预处理 5.11 “文件包含” 处理 5.12 条件编译
第5章模块化程序设计 51概述 在进行程序设计时,程序员总是将复杂的问题进行 分解,化整为零。编写一段小程序就能解决一个小问题, 然后将这些小程序拼装起来就能解决非常大而复杂的问 题。在C中,这些小程序统称为函数。 在C中,由系统提供的函数放在函数库中供用户选 用,以减少重复编写程序模块的工作量。 ①所有函数都是平行的,相互独立不能嵌套,但可以相 互调用。 ②c函数分标准函数库函数和自定义函数。 ③c函数本身分有参函数和无参函数
第 5 章 模块化程序设计 在进行程序设计时,程序员总是将复杂的问题进行 分解, 化整为零。编写一段小程序就能解决一个小问题, 然后将这些小程序拼装起来就能解决非常大而复杂的问 题。在 C 中,这些小程序统称为函数。 在 C 中,由系统提供的函数放在函数库中供用户选 用,以减少重复编写程序模块的工作量。 所有函数都是平行的,相互独立不能嵌套,但可以相 互调用。 C 函数分标准函数(库函数)和自定义函数。 C 函数本身分有参函数和无参函数。 5.1 概述
52函数定义的一般形式 1.无参函数的定义形式 类型标识符函数名() 【说明部分; 语句; 无参函数一般不需要返回函数值,可以省略类型标识符。 2.有参函数的定义形式 类型标识符函数名形式参数表) 形式参数说明; 说明部分; 语句
5.2 函数定义的一般形式 1.无参函数的定义形式 类型标识符 函数名( ) { 说明部分 ; 语句; } 无参函数一般不需要返回函数值,可以省略类型标识符。 2.有参函数的定义形式 类型标识符 函数名(形式参数表) 形式参数说明; { 说明部分 ; 语句; }
例: int max(x,y) int X, yi /*形式参数说明* f int z *函数体中的说明部分* Z=Xy ?x: y return (z) 这两行可以写成一行: int max(int x, int 3.“空函数 类型说明符函数名() “空函数”什么操作也不做。其作用是在此处留一函数的 位置,以便将来扩充功能之用。函数名也在将来换取实 际的函数名
例: int max(x,y) int x, y; / 形式参数说明 / { int z; / 函数体中的说明部分 / z=x>y ? x : y; return(z); } 类型说明符 函数名( ) { } “空函数”什么操作也不做。其作用是在此处留一函数的 位置,以便将来扩充功能之用。函数名也在将来换取实 际的函数名。 这两行可以写成一行: int max(int x, int y) 3.“ 空函数
53函数参数和函数的值 1.形式参数和实际参数 例51从键盘输入两个数,输出其中较大的一个。 main( f int a, b,C, scanf("%d, d,,&a, &b C=max(a, b); *a,b为实际参数* printf(( Max is%d”,c); max(x,y) *x,y为形式参数* int X, yy f int z=X>y x: y; return (z);
5.3 函数参数和函数的值 1.形式参数和实际参数 例5.1 从键盘输入两个数,输出其中较大的一个。 main( ) { int a, b, c ; scanf(“%d,%d”, &a, &b); c=max(a,b); / a, b为实际参数 / printf(“Max is %d”,c); } max(x,y) / x, y为形式参数 / int x, y; { int z; z=x>y ? x : y; return(z); }