1、第 5章 函数及变量的存储类别5.0 概述5.1函数的定义5.2函数调用5.3变量的作用域和存储类别5.4内部函数和外部函数5.5函数的嵌套调用和递归调用第 5章 函数及变量的存储类别 5.0 概述模块化程序设计v基本思想:将一个大的程序按功能分割成一些小模块 ,v特点:l各模块相对独立、功能单一、结构清晰、接口简单l控制了程序设计的复杂性l提高元件的可靠性l缩短开发周期l避免程序开发的重复劳动l易于维护和功能扩充v开发方法 : 自上向下 ,逐步分解,分而治之C是模块化程序设计语言C程序结构printf(“nplease input( n,k): “); /*输入 n、 k的值 */scanf
2、(“%d,%d“,c=fac(n)/(fac(k)*fac(n-k); /*三次调用函数 fac, 求 n!、 k!、 (n-k)!*/printf(“nC(n,k)=%d“,c); /*输出计算结果 */int fac(int m) /*计算一个整数的阶乘 */int i,s=1;for(i=1;iy?x:y;return(z);例 有参函数(现代风格)int max(int x, y) int z;z=xy?x:y;return(z);例 空函数dummy( ) 函数体为空例 无参函数printstar( ) printf(“*n”); 或printstar(void ) printf(“
3、*n”); 函数类型 函数名(形参表)形参类型说明说明部分语句部分传统风格 :例 有参函数(传统风格)int max(x,y)int x,y; int z;z=xy?x:y;return(z);int max(int x1,int x2,int x3) /*定义函数的返回值类型,函数名,形参 */int max;if (x1x2) max=x1;else max=x2;if (maxx3) max=x3; /*通过比较得到三个数的最大值放到 max中 */return(max); /*返回运算结果 */ 【例 5.1】编写函数 ,求三个整型参数的最大值。 5.1.2 函数的返回值返回语句v形式
4、: return(表达式 );或 return 表达式 ;或 return;v功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数v说明:l函数中可有多个 return语句l若无 return语句,遇到函数结束的 “”时,自动返回调用函数l若函数类型与 return语句中表达式值的类型不一致,按前者为准,自动转换 -函数调用转换lvoid型函数:无返回值的函数例 无返回值函数void swap(int x,int y ) int temp;temp=x;x=y;y=temp;printstar() printf(“*“);main() int a;a=printstar();printf(“%d“,a);例 无返回值的函数返回后带回不确定值输出: 10void printstar() printf(“*“);main() int a;a=printstar();printf(“%d“,a);编译错误!