五章模块化程序设计 >41函数
第五章 模块化程序设计 ➢ 4.1 函数
第四章模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块, 特点 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法:自上向下逐步分解,分而治之
第四章 模块化程序设计 ◼ 基本思想:将一个大的程序按功能分割成一些小模块, ◼ 特点: ◼ 各模块相对独立、功能单一、结构清晰、接口简单 ◼ 控制了程序设计的复杂性 ◼ 提高元件的可靠性 ◼ 缩短开发周期 ◼ 避免程序开发的重复劳动 ◼ 易于维护和功能扩充 ◼ 开发方法: 自上向下,逐步分解,分而治之
C是模块化程序设计语言 C程序 源程序文件1源程序文件i源程序文件n 预编译命令 函数1 函数n 说明部分执行部分 C程序结构 口C是函数式语言 口必须有且只能有一个名为mai的主函数 mC程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用
◼ C是模块化程序设计语言 源程序文件1 预编译命令 说明部分 执行部分 函数1 函数n 源程序文件i 源程序文件n C程序 C程序结构 C是函数式语言 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用
§4.1函数 函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数 使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件
◼ 函数分类 ◼ 从用户角度 ◼ 标准函数(库函数):由系统提供 ◼ 用户自定义函数 ◼ 从函数形式 ◼ 无参函数 ◼ 有参函数 使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件 §4.1 函数
函数定义 函数返回值类型 缺省int型 般格式 无返回值void 合法标识符 现代风格: 函数类型函数名形参类型说明表 函数体 说明部分 语句部分 例无参函数 printstar( printf(* *********n”);} 或 printstar(void) 为空 i printf( 水**水**水**
函数定义 ◼ 一般格式 合法标识符 函数返回值类型 缺省int型 无返回值void 函数体 函数类型 函数名(形参类型说明表) { 说明部分 语句部分 } 现代风格: 例 有参函数(现代风格) int max(int x,int y) { int z; z=x>y?x:y; return(z); } 例 有参函数(现代风格) int max(int x, y) { int z; z=x>y?x:y; return(z); } 例 空函数 dummy( ) { } 函数体为空 例 无参函数 printstar( ) { printf(“**********\n”); } 或 printstar(void ) { printf(“**********\n”); }
传统风格:|函数类型、函数名(形参表) 形参类型说明 说明部分 语句部分 例有参函数(传统风格) int max(x, y) int x y Z=X>y?xy return (z)
函数类型 函数名(形参表) 形参类型说明 { 说明部分 语句部分 } 传统风格: 例 有参函数(传统风格) int max(x,y) int x,y; { int z; z=x>y?x:y; return(z); }
数的返回值 例无返回值函数 void swap(int x, int y) 返回语句 int temp 形式: return(表达式) temp==X, 或或 return表达式 return y=temp 功能:使程序控制从被调用 同时把返值带给调用函数 说明: n函数中可有多个reun语句 若无 return语句,遇时,自动返回调用函数 若函数类型与 return语句中表达式值的类型不一 致,按前者为准,自动转换-数调用转换 aVod型函数
函数的返回值 ◼ 返回语句 ◼ 形式: return(表达式); 或 return 表达式; 或 return; ◼ 功能:使程序控制从被调用函数返回到调用函数中, 同时把返值带给调用函数 ◼ 说明: ◼ 函数中可有多个return语句 ◼ 若无return语句,遇}时,自动返回调用函数 ◼ 若函数类型与return语句中表达式值的类型不一 致,按前者为准,自动转换------函数调用转换 ◼ void型函数 例 无返回值函数 void swap(int x,int y ) { int temp; temp=x; x=y; y=temp; }
例函数返回值类型转换 main i float a, b; C scanf( %f, %f", &a, &b) c=max(a, b) printf("Max is %dn" c); max(float x, float y) i float z ZXy!:y return(
例 函数返回值类型转换 main() { float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } max(float x, float y) { float z; z=x>y?x:y; return(z); }
数的调用 调用形式 哟数名(买参表) 说明: 实参与形参个数相等,类型一致,按顺序一一对应 函数中对形参变量的操作不会影响到调用函数中的 实参变量,即形参值不能传回给实参
函数的调用 ◼ 调用形式 函数名(实参表); 说明: ◼ 实参与形参个数相等,类型一致,按顺序一一对应 ◼ 函数中对形参变量的操作不会影响到调用函数中的 实参变量,即形参值不能传回给实参
例47 main( int a=3.b=5 void swap(int x, int y swap a printf(a=%d, b=%d n"a, b) void swap(int x, int y i int temp 执行结果: temp=X, Xy, y=temp a=3.b=5 printf( a=%d, b=%d n", a, b)
例4.7 main() { int a=3,b=5; void swap(int x,int y ); swap(a,b); printf(“a= %d,b = %d \n",a,b); } void swap(int x,int y ) { int temp; temp=x; x=y; y=temp; printf(“a= %d,b = %d \n",a,b); } 执行结果: x=5,y=3 a=3,b=5