




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5讲使用函数封装代码 本讲学习内容 函数及其组成使用函数的结构化编程的优点如何创建函数如何在函数中声明局部变量如何从函数将值返回给程序如何给函数传递参数 1 5 1函数是什么 函数的定义函数是一个被命名的 独立的代码段 它执行特定的任务 并可能给调用它的程序返回一个值 2 函数是什么 函数的用法参见程序ch5 cube c 3 5 2自顶向下的方法 采用结构化编程时 可以选用自顶向下的方法 程序的大多数实际工作是由位于树枝末梢的函数完成 位于 主干 附件的函数主要用于引导程序执行这些函数 要求编写代码之前一定要进行规划 预先确定程序的结构可以节省编写和调试代码的时间 4 5 3函数的工作原理 仅当函数被程序的其他部分调用后 函数中的语句才会被执行 调用函数时 程序可以通过一个或多个参数给它传递信息 然后执行函数中的语句 完成设计任务 函数中的语句执行完毕后 控制权将返回给调用函数的地方 函数能够以返回值的方式将信息返回给程序 5 函数的工作原理 main callfunc1 callfunc2 callfunc3 func1 func2 func3 6 5 4编写函数 函数头函数的返回类型函数名参数列表函数体函数原型 7 5 4 1函数头 每个函数的第一行都是函数头 函数头由三部分组成 其中每一部分完成特定的功能 typefunction name parm1 函数的返回类型 函数名 参数列表 8 5 4 2函数的返回类型 函数的返回类型指定了函数返回给调用程序的数据类型 例如 intfunc1 Returnsatypeint floatfunc2 Returnsatypefloat voidfunc3 Returnsnothing 9 5 4 3函数名 遵循变量名规则 可以为函数命名为任何名称 在一个具体的C程序中 函数名必须唯一 建议给函数指定一个描述其功能的名称 10 5 4 4参数列表 函数通过参数来接受外界传入的值 其参数类型信息由函数头中的参数列表提供 例如 longcube longx voidfunc1 intx floaty charz intfunc2 void 11 形参与实参 形参 parameter 位于函数头 是实参的一个占位符 函数的形参是固定的 在程序执行期间不会变化 实参 argument 是调用程序传递给函数的实际值 每次调用函数时 可以传递不同的参数 关系 函数通过相应的形参名来访问实参 12 形式参数与实际参数的关系 形式参数在函数中是变量名 在函数调用时 形参被分配相应的内存 实际参数是表达式负责向对应的形参标识的内存单元传递数据 实参与形参必须个数相同 对应的形参和实参的类型必须一致 形参和实参之间的关系是 单向的值的传递 主调函数中有如下语句 scanf d d 如果输入6 2函数intmax inta intb 形参a得到第一个实际参数a的值6形参b得到第二个实际参数b 3的值5 例如 13 形参与实参的区别 参见程序ch5 list1 c 14 形参与实参 第一次调用z half of x floathalf of floatk 3 5 实参 形参 第二次调用z half of y floathalf of floatk 65 11 实参 形参 15 5 4 5函数体 局部变量函数的语句返回值 16 1 局部变量 在函数体中声明的变量 称之为局部变量 该变量是该函数私有的 声明局部变量的方式和其他变量相同 可以声明任何类型的变量 intfunc1 inty inta b 10 floatrate doublecost 12 55 functioncodegoeshere 17 演示局部变量 参见程序ch5 var c 18 2 函数的语句 函数几乎可以包含任何语句 在函数中唯一不能做的是定义另一个函数 但可以使用其他任何语句 包括调用函数 19 3 返回一个值 要从函数返回一个值 可以使用关键字return 并在后面加上一个表达式 intfunc1 intvar intx Functioncodegoeshere returnx 20 返回一个值 函数可以包含多条return语句 但只有一条被执行的return语句对程序有影响 参见程序ch5 return c 21 5 4 6函数原型 使用用户定义的每个函数 程序都应包含一个原型 其功能是将有关函数的信息告知编译器 函数原型和函数头相同 只是后面多了一个分号 22 5 5将参数传递给函数 要将参数传递给函数 可将它们放在函数名的后面 并用圆括号括起 参数的数目与类型必须同函数头和函数原型中的形参匹配 inta b c 函数调用func1 a b c 函数头voidfunc1 intx inty intz 23 将参数传递给函数 每个参数都是可以任何合法的表达式 常量 变量 数学表达式 甚至可以是另一个函数 返回一个值的函数 例如 half square 和third 均为有返回值的函数 则可以这样编写代码 x half third square half y 24 5 6调用函数 调用函数的方式有两种 对于任何函数 都可以使用其名称和参数列表进行调用 仅适用于有返回值的函数 即为合法的表达式 可用于任何能使用表达式的地方 wait 12 printf Halfof dis d x half of x a half of x if half of x 10 25 递归 递归指的是函数直接或间接调用自己 间接递归指的是一个函数调用另一个函数 而后者又调用前者 26 使用递归函数计算阶乘 例如 x的阶乘表示为x 计算方法如下 x x x 1 x 2 x 3 2 1 然而 也可以这样计算x x x x 1 然后 可以使用同样的方法计算x 1的阶乘 x 1 x 1 x 2 可以不断地以递归的方式计算下去 直到1 参见程序ch5 recurse c 27 5 7函数的位置 就目前水平而言 函数定义位于main 函数所在的源代码文件中 并位于main 函数的后面 函数原型voidfunc1 intx inty intz intmain void inta b c 函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版数据中心机房电气系统检修及保养合同范本
- 二零二五年度新媒体内容创作者劳动合同范本
- 2025年亳州市谯城区交通能源投资集团有限公司招聘11人笔试参考题库附带答案详解
- 2025年芜湖鸠兹水务有限公司下属子公司第一批人员招聘13人笔试参考题库附带答案详解
- 2025中国水电三局校园招聘笔试参考题库附带答案详解
- 七年级的试卷数学试卷
- 2025年中国汽车技术研究中心有限公司校园招聘笔试参考题库附带答案详解
- 2025广西贵港市金融投资发展集团有限公司公开招聘5名工作人员笔试参考题库附带答案详解
- 2025年长江环保集团社会招聘(第一批)(面向集团内外)笔试参考题库附带答案详解
- 启东市二模数学试卷
- 养生馆转让协议书
- 南充市“十四五”现代物流产业发展规划
- 外观检验考试试题及答案
- 义务教育《艺术课程标准》2022年修订版(原版)
- 江苏省无锡市江阴市六校2024-2025学年高一下学期4月期中联考试题 物理 含答案
- 医保人员管理制度
- 《杜甫生平》课件
- 电话卡租借合同协议
- 学校食堂保洁员的安全职责
- 2025年中医经典知识竞赛考试题库及答案
- 2025汽水管道应力计算相关软件使用导则
评论
0/150
提交评论