
第8章1 函数 §8.1概述 ★模块化程序设计 ★基本思想:将一个大程序按功能分割成一些小模块, 特点: ●模块相对独立、功能单一、接口简单 ●控制了程序设计的复杂性 ●提高元件的可靠性 ●缩短开发周期 ●避免程序开发的重复劳动 ●易于维护和功能扩充 冬开发方法:自上向下,逐步分解,分而治之
第8章 函数 §8.1 概述 模块化程序设计 基本思想:将一个大程序按功能分割成一些小模块, ❖特点: ⚫模块相对独立、功能单一、接口简单 ⚫控制了程序设计的复杂性 ⚫提高元件的可靠性 ⚫缩短开发周期 ⚫避免程序开发的重复劳动 ⚫易于维护和功能扩充 ❖开发方法: 自上向下,逐步分解,分而治之

★C是模块化程序设计语言 C程序 源程序文件1 源程序文件1 源程序文件n 预编译命令 函数1 函数n 说明部分 执行部分 C程序结构 四C是函数式语言,包括标准库函数和用户自定义函数 四必须有且只能有一个名为main主函数(开始1结束点) 四c程序的执行总是从main函数开始,在main中结束 四函数不能嵌套定义,可嵌套调用(主调和被调) 四main函数只能是主调函数,其他函数则两者皆可
C是模块化程序设计语言 源程序文件1 预编译命令 说明部分 执行部分 函数1 函数n 源程序文件i 源程序文件n C程序 C程序结构 C是函数式语言,包括标准库函数和用户自定义函数 必须有且只能有一个名为main主函数(开始\结束点) C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义, 可嵌套调用(主调和被调) main函数只能是主调函数,其他函数则两者皆可

★函数分类 必从用户角度 ●标准函数(库数):由系统提供 ●用户白自定义丞数 从函数形式 ●无参丞数 ●有参数 使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、 需要使用的包含文件
函数分类 ❖从用户角度 ⚫标准函数(库函数):由系统提供 ⚫用户自定义函数 ❖从函数形式 ⚫无参函数 ⚫有参函数 使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件

函数返回值类 §8.2函数的定义 型缺省int型无 返回值,省略 ★一般格式 return,void 函数头 标准c定义: 函数类型 函数名(形参类型说明表) 函数体 声明部分 执行部分 例无参函数 printstar() {printf(*******n);} 或 printstar(void printf******n2”);}
§8.2 函数的定义 一般格式 函数返回值类 型缺省int型无 返回值,省略 return,void 函数体 函数类型 函数名(形参类型说明表) { 声明部分 执行部分 } 标准c定义: 例 有参函数(标准c) int max(int x,int y) { int z; z=x>y?x:y; return(z); } 例 有参函数(标准c) int max(int x, y) { int z; z=x>y?x:y; return(z); } 例 空函数 dummy( ) { } 函数体为空 例 无参函数 printstar( ) { printf(“**********\n”); } 或 printstar(void ) { printf(“**********\n”); } 函数头

函数头 函数类型 函数名(形参表) 经典c定义: 形参类型说明 说明部分 函数体 语句部分 例 有参函数(传统风格) int i max (x,y) int x,y; int z; z=x>y?x:y; return (z)
函数类型 函数名(形参表) 形参类型说明 { 说明部分 语句部分 } 经典c定义: 例 有参函数(传统风格) int max(x,y) int x,y; { int z; z=x>y?x:y; return(z); } 函数体 函数头

例8.1:求3个字符中的最大值 char char①max(char x,char v,char z→ max (x,y,z) char m; char x,y,x; m=x>y?x:y m=m>z?m:z main函数可在任何位置, return(m ) x、y、z形参,a、b、c为 ②main() 实参,函数不能自己执行, char a,b,c,d; 只能被调用 printf(“Enter three characters:\n”); scanf(“%c,%c,%c”,&a,&b,&c); d=max a,b,c printf(“Max=%c”,d);
例8.1:求3个字符中的最大值 char ①max(char x,char y,char z ) { char m; m = x > y ? x : y ; m = m > z ? m : z ; return( m ); } ②main( ) { char a,b,c,d; printf(“Enter three characters:\n”); scanf(“%c,%c,%c”,&a,&b,&c ); d = max( a,b,c ); printf(“Max = %c”, d); } main函数可在任何位置, x、y、z形参,a、b、c为 实参,函数不能自己执行, 只能被调用 char max(x,y,z); char x,y,x;

8.3函数的参数和返回值 ?形式参数:定义函数时函数名后面括号中的变量名 冬实际参数:调用函数时函数名后面括号中的表达式 比较两个数并输出大者 main() c=max(a,b);(main函数) {int a,b,c; max (int x,int y) scanf ("%d,%d",&a,&b) int z; (max函数) c=max (a,b); 实参 z=x>y?x:y; printf("Max is %d,c; return (z) 形参 max (int x,int y) int z; z=x>y?x:y; return(z);]
8.3 函数的参数和返回值 ❖形式参数:定义函数时函数名后面括号中的变量名 ❖实际参数:调用函数时函数名后面括号中的表达式 c=max(a,b); (main函数) (max函数) max(int x, int y) { int z; z=x>y?x:y; return(z); } 比较两个数并输出大者 main() {int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("Max is %d",c); } max(int x, int y) { int z; z=x>y?x:y; return(z);} 形参 实参

★说明: 实参必须有确定的值,可是常量、变量或表达式 冬形参必须指定类型 冬形参与实参类型一致,个数相同 冬若形参与实参类型不一致,自动按形参类型转 换一 函数调用转换(标准c定义) 冬对于经典c函数定义,当参数个数和类型不匹配 时,运行结果错误 形参在函数被调用前不占内存;无确定值,函数 调用时为形参分配内存,接收传递来的实参值; 调用结束,内存释放 ?形参是函数内部的局部变量,可以和实参同名
说明: ❖实参必须有确定的值,可是常量、变量或表达式 ❖形参必须指定类型 ❖形参与实参类型一致,个数相同 ❖若形参与实参类型不一致,自动按形参类型转 换— 函数调用转换(标准c定义) ❖对于经典c函数定义,当参数个数和类型不匹配 时,运行结果错误 ❖形参在函数被调用前不占内存;无确定值,函数 调用时为形参分配内存,接收传递来的实参值; 调用结束,内存释放 ❖形参是函数内部的局部变量,可以和实参同名

例 计算x的立方 #include a 1.2 float cube(float x) product 1.728 return (x*x*x); main() float a,product; printf("Please input value of a:") scanf ("%f",&a); product=cube(a); printf("Cube of %4f is %4f\n",a,product)
例 计算x的立方 #include float cube(float x) { return(x*x*x); } main() { float a, product; printf("Please input value of a:"); scanf("%f",&a); product=cube(a); printf(”Cube of %.4f is %.4f\n",a,product); } x a product ×× ×× 1.2 1.2 1.728

返回语句 例 无返回值函数 形式return(表达式);或r void swap(int x,int y 功能:①为完成一定的处玛 {int temp; 无返回值;②为得到计算 temp=x; 调函数返回调用函数,同 x=y; 说明:函数中可有多个 y=temp; 若无return语句,遇}时} 若函数类型与return语句中表达式值的类型不一致, 按前者为准,自动转换- 函数调用转换 无返回值的函数应定义为void型,否则返回一个不确 定的值 return语句的功能是结束被调函数的运行,返回主调 函数继续执行后面的语句。无返回值的函数可用 return
返回语句 形式return(表达式);或return 表达式;或return; 功能:①为完成一定的处理功能,被调函数只执行处理, 无返回值;②为得到计算处理结果,使程序控制从被 调函数返回调用函数,同时把返回值给调用函数 说明:函数中可有多个return语句 若无return语句,遇}时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致, 按前者为准,自动转换-函数调用转换 无返回值的函数应定义为void型,否则返回一个不确 定的值 return语句的功能是结束被调函数的运行,返回主调 函数继续执行后面的语句。无返回值的函数可用 return ; 例 无返回值函数 void swap(int x,int y ) {int temp; temp=x; x=y; y=temp; }