资源预览内容
第1页 / 共89页
第2页 / 共89页
第3页 / 共89页
第4页 / 共89页
第5页 / 共89页
第6页 / 共89页
第7页 / 共89页
第8页 / 共89页
第9页 / 共89页
第10页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
章节:作者:Slide: 4-1函数与模块化设计方法傅忠传哈尔滨工业大学 计算机学院2003年8月傅忠传章节:作者:Slide: 4-2函数与模块化设计方法傅忠传第四章 函数函数与结构化结构化 设计方法设计方法 章节:作者:Slide: 4-3函数与模块化设计方法傅忠传 该章的学习内容学点什么哪?1. 掌握函数原型(prototype)及其,函数定义和函数原型说明的方法及二者的区别。2. 掌握函数的参数传递方式与函数调用方法。 3. 理解掌握变量的作用域和存储类的概念。章节:作者:Slide: 4-4函数与模块化设计方法傅忠传1.通过C语言的学习,牢固树立起函数函数的概念,及其使用规则 。 2.理解函数的作用域及其存储类及其自动变量与静态局部变量在应用中的区别。 *3.在实际应用中,学习和体会采用结构化设计方结构化设计方法法(模块化)解决问题 的思想。本章的学习难点章节:作者:Slide: 4-5函数与模块化设计方法傅忠传 本章目录1. 函数 2. *宏定义 3. 变量的作用域和存储类 4. *模块化程序设计方法 5. *应用设计实例 6. 多文件方式组织的程序章节:作者:Slide: 4-6函数与模块化设计方法傅忠传 本章目录1. 函数1.1.函数有关概念及其分类1.2.函数的定义1.3.函数的返回值1.4.函数的调用与参数传递1.5.函数原型的说明 2. *宏定义 3. 变量的作用域和存储类 4. *模块化程序设计方法 5. *应用设计实例 6. 多文件方式组织的程序章节:作者:Slide: 4-7函数与模块化设计方法傅忠传C程序工程源程序文件1源程序文件2源程序文件3编译预处理命令全局变量声明函数1函数n函数首部函数体局部变量声明执行语句C程序的基本结构章节:作者:Slide: 4-8函数与模块化设计方法傅忠传 函数的基本概念(1) projectproject 工程:是由一个或 多个C程序源文件组成。一个源程序是 由一个或多个函数组成。一个源程序是一个编译单位,即以源 程序为单位进行编译,而不是以函数为 单位进行编译。其扩展名为 .h或 .c。(3)C程序的执行从main()函数开始。 没有main( )函数的程序,不能执行。调用其他函数后流程回到main函数, 在main函数结束整个程序运行。 main函数是系统定义的。(4)主函数可以调用任意子函数,而 子函数不能调用主函数。子函数的地位是平等的,相互独立, 相互无从属关系,可以相互调用。子函数可以直接或间接地自己调用自 己,即递归调用。(2)C语言程序源文件由函数函数组成 函数函数的概念是C语言结构程序设计结构程序设计思想 的体现。主函数:包括一个且仅有一个 main()。其他函数:可以有,也可以没 有,可以有一个,也可以有多个。 C C程序由程序由主程序与子程序主程序与子程序组成组成章节:作者:Slide: 4-9函数与模块化设计方法傅忠传 函数的分类(1)标准函数(库函数)使用:用#include 命令将调用函数所需头文件包含到源文件中之后可直接调用。从用户角度看 :如:scanf、printf、sqrt、getchar等用户自定义函数:先定义而后使用先定义而后使用( (调用调用)! )! 用户自定义函数使用的一般过程: 函数定义函数定义, ,函数说明函数说明, ,函数调用函数调用章节:作者:Slide:4-10函数与模块化设计方法傅忠传无参函数 int a( )函数的分类(2)从函数的形式看 :有参函数 int max( x , y )主调函数调用主调函数调用 被调函数时,不被调函数时,不 能传递参数能传递参数( (数数 据据) )。一般用来执。一般用来执 行指定的一组行指定的一组 操作。操作。参数参数章节:作者:Slide:4-11函数与模块化设计方法傅忠传 函数的定义(1)传统风格函数定义:类型类型 函数名(形参表列)形参说明说明部分语句形参表列是用逗号分隔形参表列是用逗号分隔 的形参,形参又称为的形参,形参又称为形式形式 参数、哑元、虚参、虚拟参数、哑元、虚参、虚拟 参数。参数。在形参说明中,说在形参说明中,说 明形参表中每个形参的类明形参表中每个形参的类 型。型。类型:函数类型类型:函数类型, ,用来说明用来说明 本函数本函数返回值的类型返回值的类型。 当函数返回值是整型或不当函数返回值是整型或不 要求返回值时,可要求返回值时,可省略类省略类 型说明型说明。无返回值可用。无返回值可用 “ “空类型空类型” ” voidvoid函数定义定义时的参数称为行参;函数调用调用时的参数称为实参。章节:作者:Slide:4-12函数与模块化设计方法傅忠传 (2)函数的现代定义方式类型 函数名 (形参说明表列) 说明部分语句函数体函数体将形参说明包含到形参列表中,即在将形参说明包含到形参列表中,即在列出形参的同时,说明形参类型。列出形参的同时,说明形参类型。 形参列表:形参列表: 类型类型 参数参数1 1,类型,类型 参数参数2 2, ,类型,类型 参数参数n n传统定义举例传统定义举例 现代定义举例现代定义举例int int add(x, y) add(x, y) int int add( add(int int x, x, int int y y) )int int x, y; x, y; 章节:作者:Slide:4-13函数与模块化设计方法傅忠传 程序举例1定义求两个整数和的函数。定义求两个整数和的函数。int int add(add(int int x, x, int int y) y) int int z; z;z=x+y; z=x+y;return(z); return(z); 章节:作者:Slide:4-14函数与模块化设计方法傅忠传当函数不需要参数时,省略形参表列当函数不需要参数时,省略形参表列 和形参说明,但不能省略括号,函数名和形参说明,但不能省略括号,函数名 后的括号内为空,即为无参函数。后的括号内为空,即为无参函数。 Void print_info( )Void print_info( ) printfprintf(“-n“);(“-n“);printfprintf(“Welcome to HIT.n“);(“Welcome to HIT.n“);printfprintf(“-n“);(“-n“); 函数定义说明当函数为有参函数时,应对其全部参当函数为有参函数时,应对其全部参 数进行数据类型说明数进行数据类型说明。函数使用标识符给函数命名,即取名函数使用标识符给函数命名,即取名 原则与变量名相同。原则与变量名相同。 Int Int max(float x, float y)max(float x, float y) float z;float z;z=xy?x: y; z=xy?x: y;return(z); return(z); 函数名前面的类型即为函数名前面的类型即为函数的类型函数的类型。 函数的类型实际上是函数返回值的类型函数的类型实际上是函数返回值的类型 。当被调函数无返回值时,。当被调函数无返回值时,实际上就是实际上就是 带回的是一个带回的是一个不确定的值不确定的值,可用可用 “voidvoid” 定义定义“无类型无类型”(”(或称或称“空类型空类型”)”)。当函。当函 数的返回值为数的返回值为整型整型时,函数名前的数据时,函数名前的数据 类型可以省略。类型可以省略。 形参表列中,形参与形参间用形参表列中,形参与形参间用“ “,” ”分分 隔。隔。 形参说明是对形式参数的数据类型的形参说明是对形式参数的数据类型的 说明。说明。 在定义函数中指定的形参,在未被调在定义函数中指定的形参,在未被调 用时,他们不占用内存单元,只有在该用时,他们不占用内存单元,只有在该 函数被调用时,函数中的形参才被分配函数被调用时,函数中的形参才被分配 内存单元。内存单元。章节:作者:Slide:4-15函数与模块化设计方法傅忠传 函数的返回值功能将被调函数被调函数中的结果值返回给主调函数主调函数。语句return(返回值表达式);举例int int add(add(int int x, x, int int y) y) int int z; z;z=x+y; z=x+y;return(z); return(z); 章节:作者:Slide:4-16函数与模块化设计方法傅忠传 函数返回说明当函数要求返回函数值时,函数体内当函数要求返回函数值时,函数体内 最后执行的语句应为返回语句最后执行的语句应为返回语句returnreturn。 一个函数中可以有一条或多条一个函数中可以有一条或多条returnreturn语语 句,只有被执行到的句,只有被执行到的returnreturn语句才起作语句才起作 用。用。当函数不需要返回值时当函数不需要返回值时 ,后面不加,后面不加 括号和表达式,也可没有括号和表达式,也可没有returnreturn。当函数值的类型和当函数值的类型和returnreturn语句后的表语句后的表 达式类型不一致时,则达式类型不一致时,则以函数类型为准以函数类型为准 。对数值型数据可自动转换。对数值型数据可自动转换。 int int max(float x, float y)max(float x, float y) float z;float z;z=xy?x: y; z=xy?x: y;return(z); return(z); 有些系统可省略有些系统可省略returnreturn后的括号。后的括号。return return _ _ 表达式;表达式; 4. 4. “ “函数类型就是函数中函数类型就是函数中returnreturn语句后表语句后表 达式的类型达式的类型” ”是错误的!是错误的! 5. 5.returnreturn语句完成了被调函数向主调函数语句完成了被调函数向主调函数 值传递的功能。值传递的功能。章节:作者:Slide:4-17函数与模块化设计方法傅忠传 函数定义的程序举例2下面add函数的功能是求两个参数的和 ,并将和值返回调用函数。函数中的错 误是: void add(float a, float b) float c;c=a+b;return c; void add(float a, float b)float add(float a, float b)章节:作者:Slide:4-18函数与模块化设计方法傅忠传 函数的调用格式格式函数名函数名( (实参实参表列表列) ) 与调用标准函数相同与调用标准函数相同说明说明当调用无参函数时,实参表列为空。当调用无参函数时,实参表列为空。int int fun( ) n=fun( ) ; fun( ) n=fun( ) ;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号