资源描述
第八章第八章 函数函数本章目标本章目标1.深入了解多个函数组成一个C程序2.深入了解和熟悉库函数3.学会编写自已函数4.了解函数调用关系5.了解函数中参数传递机制东华大学东华大学 通信与电子工程系通信与电子工程系第1页p 模块化程序设计模块化程序设计n基本思想:将一个大程序按功效分割成一些小模块基本思想:将一个大程序按功效分割成一些小模块n特点:特点:各模块相对独立、结构清楚各模块相对独立、结构清楚控制了程序设计复杂性控制了程序设计复杂性缩短开发周期缩短开发周期防止程序开发重复劳动防止程序开发重复劳动易于维护和功效扩充易于维护和功效扩充n开发方法开发方法:自上向下,逐步分解,分而治之自上向下,逐步分解,分而治之8.1 C程序模块程序模块东华大学东华大学 通信与电子工程系通信与电子工程系第2页C C程序结构程序结构&C C是是函数式函数式语言语言&必须有且只能有一个名为必须有且只能有一个名为mainmain主函数主函数&C程序执行总是程序执行总是从从mainmain函数开始,在函数开始,在mainmain中结束中结束C是模块化程序设计语言东华大学东华大学 通信与电子工程系通信与电子工程系第3页函数调用函数调用如:如:mainfunafunbfuncfundfunxfuny东华大学东华大学 通信与电子工程系通信与电子工程系第4页n从用户角度从用户角度标准函数(库函数):标准函数(库函数):由系统提供,放在头文件中由系统提供,放在头文件中用户自定义函数:用户自定义函数:由程序设计人员编写由程序设计人员编写函数分类函数分类 全部函数都全部函数都 含有两种特征:含有两种特征:返回值返回值参数参数(返回值和参数都是可缺省返回值和参数都是可缺省)n从函数形式从函数形式无参函数:执行制订一组操作。无参函数:执行制订一组操作。有参函数:主调经过参数向被调用函数传递数据。有参函数:主调经过参数向被调用函数传递数据。例例 无参函数无参函数 void printstar()printf(“*n”);东华大学东华大学 通信与电子工程系通信与电子工程系第5页库函数:库函数:系统自带标准库函数,依据不一样功效作用放在系统自带标准库函数,依据不一样功效作用放在不一样头文件中。不一样头文件中。如:如:stdio.h用于标准输入用于标准输入/输出输出math.h用于数学计算用于数学计算ctype.h用于字符处理用于字符处理string.h用于字串处理用于字串处理time.h用于时间用于时间/日期处理日期处理dir.h用于控制目录和路径用于控制目录和路径graphics.h用于图形操作用于图形操作dos.hbios.h用于接口处理用于接口处理 东华大学东华大学 通信与电子工程系通信与电子工程系第6页例例1 1:求两个浮点型数值求两个浮点型数值x/y余数。余数。(注意:不能写成注意:不能写成3.6%1.7)#include#include void main()float x,y,z;scanf(%f%f,&x,&y);z=fmod(x,y);printf(z=%f,z);东华大学东华大学 通信与电子工程系通信与电子工程系第7页p普通格式普通格式正当标识符正当标识符从函数名能从函数名能够反应出函够反应出函数功效数功效函数返回值类型函数返回值类型缺省缺省int型型无返回值无返回值void函数体函数体函数类型函数类型 函数名函数名(形参类型说明表形参类型说明表)局部变量说明部分局部变量说明部分语句部分语句部分当代格调当代格调:例例 有参函数(当代格调)有参函数(当代格调)int max(int x,int y)int z;z=xy?x:y;return(z);例例 有参函数(当代格调)有参函数(当代格调)int max(int x,y)int z;z=xy?x:y;return(z);8.2 函数定义函数定义局部变量:局部变量:函数内部定义变量。其有效范围仅限于所在函数内部,函数内部定义变量。其有效范围仅限于所在函数内部,离开函数体则无意义离开函数体则无意义东华大学东华大学 通信与电子工程系通信与电子工程系第8页函数类型函数类型 函数名(形参表)函数名(形参表)形参类型说明形参类型说明局部变量说明部分局部变量说明部分语句部分语句部分传统格调传统格调:例例 有参函数(传统格调)有参函数(传统格调)int max(x,y)int x,y;int z;z=xy?x:y;return(z);函数传统格调和例子函数传统格调和例子东华大学东华大学 通信与电子工程系通信与电子工程系第9页p函数参数:用于函数间数据传递函数参数:用于函数间数据传递p形参加实参形参加实参n形式参数:定义函数时函数名后面括号中变量名形式参数:定义函数时函数名后面括号中变量名n实际参数:调用函数时函数名后面括号中表示式实际参数:调用函数时函数名后面括号中表示式c=max(a,b);(main 函数)函数)(max 函数)函数)max(int x,int y)int z;z=xy?x:y;return(z);例例 比较两个数并输出大者比较两个数并输出大者#include max(int x,int y)int z;z=xy?x:y;return(z);void main()int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(Max is%d,c);形参形参实参实参8.3 函数参数和函数返回值函数参数和函数返回值东华大学东华大学 通信与电子工程系通信与电子工程系第10页说明:说明:1.定义函数时必须说明形参类型。形参只能是定义函数时必须说明形参类型。形参只能是变量变量或或数组数组。2.形参在函数被调用前不占内存;形参在函数被调用前不占内存;函数调用时暂时为函数调用时暂时为形参分配内存单元;调用结束,占用内存单元被释形参分配内存单元;调用结束,占用内存单元被释放。放。3.实参必须有确定值实参必须有确定值,能够是,能够是常量、变量常量、变量或或表示式表示式4.形参加实参应形参加实参应类型一致,个数相同;类型一致,个数相同;5.若形参加实参类型不一致,自动按形参类型转换若形参加实参类型不一致,自动按形参类型转换函数调用转换函数调用转换5.尽管实参和形参能够同名,但为了防止混同,提议尽管实参和形参能够同名,但为了防止混同,提议实参和对应形参不要用完全相同名字。实参和对应形参不要用完全相同名字。p形参加实参形参加实参东华大学东华大学 通信与电子工程系通信与电子工程系第11页p函数值返回语句函数值返回语句n形式:形式:return(表示式表示式);或或 return 表示式表示式;或或 return;n功效:使程序控制从被调用函数返回到调用函数中,功效:使程序控制从被调用函数返回到调用函数中,同时把返回值带给调用函数同时把返回值带给调用函数n说明:说明:函数返回值函数返回值东华大学东华大学 通信与电子工程系通信与电子工程系第12页说明说明1:东华大学东华大学 通信与电子工程系通信与电子工程系第13页说明说明2:东华大学东华大学 通信与电子工程系通信与电子工程系第14页说明说明3:东华大学东华大学 通信与电子工程系通信与电子工程系第15页p调用形式调用形式 函数名函数名(实参表实参表);说明:说明:实参加形参实参加形参个数相等个数相等,类型一致类型一致,按次序一一对应按次序一一对应实参表求值次序,因系统而定(实参表求值次序,因系统而定(Turbo C 自右向左自右向左)参见例参见例8.48.4 函数调用东华大学东华大学 通信与电子工程系通信与电子工程系第16页n函数语句:函数语句:例例 printstar();printf(“Hello,World!n”);n函数表示式:函数表示式:例例 m=max(a,b)*2;n函数参数:函数参数:函数调用作为一个函数实参函数调用作为一个函数实参 例例 printf(“%d”,max(a,b);m=max(a,max(b,c);函数调用方式东华大学东华大学 通信与电子工程系通信与电子工程系第17页东华大学东华大学 通信与电子工程系通信与电子工程系第18页
展开阅读全文