- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 函数 主要内容 函数定义、函数原型、函数调用 参数传递 标识符的作用域 变量的生命期 函数的接口设计 预处理指示及标准库函数 递归 1、概述 1、概述(续) 使用函数的优点 符合人类解决问题的思维方式:分解 便于程序的调试和修改 函数代码可以重用,减少了重复编写程序的工作量 1、概述(续) 几个名词 例程(routine) 子程序(subprogram) 过程(procedure) 函数(function) 2、函数定义 语法形式 2、函数定义(续) 返回值类型 void( void function,无返回值函数) 其他(value-returning function,带返回值函数) 函数名 main 其它(通常按功能命名) 形式参数列表 含0个或多个形参 各形参为变量定义形式,以逗号分隔 2、函数定义(续) 函数体 由花括号{}及其中的C++语句组成,实现函数功能 带返回值函数的函数体中必含有至少一条return语句 return 表达式; 无返回值函数的函数体中则没有return语句,或含有 return; 3、函数原型 语法形式 作用 为编译器提供相关函数的信息,令编译器在编译后面的函数调用语句时,可以成功 3、函数原型(续) 函数原型与函数首部的联系与区别 函数原型一般放在程序(文件)的开头部分,起全局作用 如果函数定义出现在函数调用语句之前,则无须使用函数原型 原型又称函数声明(引用性声明) 4、函数调用 控制流程 例: 4、函数调用(续) 语法形式 printLine() ; x = mulSqrt( x1, x2 ) ; 4、函数调用(续) 形式参数vs.实际参数 函数首部中的参数称为形式参数(形参,parameter) ;函数调用中的参数称为实际参数(实参,argument) 。一般情况下,实参的数量、位置与数据类型应该与形参一致。 5、参数传递 实参与形参间的数据传递 传递方式 按值传递(若形参为值形参) 按引用传递(若形参为引用形参) 5、参数传递(续) 值形参 函数首部中的形参没有在数据类型后加 它接收实参的值 会分配到内存(与实参占用不同的内存块) 用途:从函数调用者获取数据(单向数据传递) 引用形参 函数首部中的形参在数据类型后加上 它接收实参的内存地址 不被分配内存(与实参共用同一内存块) 用途:可实现函数与调用者之间的双向数据传递 5、参数传递(续) 例:函数f的函数首部如下 void f( int param1, //param1是引用形参 int param2, //param2是值形参 float param3 ) //param3是引用形参 5、参数传递(续) 形参对实参的要求 类型要兼容 例: mulSqrt( 2.1, 3.4 ) 的返回值实际为sqrt(6) 值形参:要求对应实参为表达式即可 引用形参:要求对应实参为变量 形参和实参可以同名 例: int x, a1, a2; … x = mulSqrt(a1, a2); 例:值形参与引用形参 例:值形参与引用形参的选择 编写一个getRoots函数,用来计算一元 二次方程的实根。 例:值形参与引用形参的选择(续) 例:值形参与引用形参的选择(续) 例:引用形参的运用 编写函数swap,负责把两个变量的值互换 例:引用形参的运用(续) 例:引用形参的运用(续) 5、参数传递(续) 带返回值函数vs.无返回值函数 采用引用形参,任何函数都可以编写成void函数 带返回值函数的调用形式与数学公式的习惯吻合 y=sin(x) t=sqrt(del) 6、标识符的作用域 在程序代码中可以合法引用(使用)该标识符的区域 局部作用域 在块中声明的标识符,其作用域是从声明处到该块结尾 形参具有局部作用域:从声明处到函数结尾 全局作用域 在所有块(包括函数、类和控制结构中的块)以外声明的标识符,其作用域是从声明处到文件结尾 const float DISCOUNT = 0.05 ; float payRate ; void caculate ( int, float ) ; int main ( ) {
您可能关注的文档
- 第2章基本二维绘图讲解.ppt
- 高三备考思考化学讲解.ppt
- 第2章计算机系统的组成及典型讲解.ppt
- 高三第一轮复习政治生活第六课讲解.ppt
- 高三第一轮复习专题直线与圆锥曲线的综合问题讲解.ppt
- 高三化学工艺流程题解题技巧点拨讲解.doc
- 高三历史综合练习十讲解.docx
- 第03章_机器人运动学讲解.ppt
- 高三生物基础知识大检查(310问)讲解.doc
- 高三数学双曲线复习讲解.doc
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)