第9章 节 常用代码的集装箱——函数 C++教学用PPT .ppt

第9章 节 常用代码的集装箱——函数 C++教学用PPT .ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 节 常用代码的集装箱——函数 C++教学用PPT .ppt

9.4.1 函数调用的方式 9.4.2 参数传递方式 9.4.3 函数的嵌套调用 9.4.4 递归调用 9.4.5 函数的重载 9.4.6 带默认值的函数 9.4.1 函数调用的方式 如何调用函数,根据它在程序中的用途,主要分为3种 形式。 ⑴ 函数语句:把函数调用单独作为一个语句,并不要求函数返回一个值,只是要求函数完成一定的操作。 max(33,36); ⑵ 函数表达式:函数出现在一个表达式中,这时要求函数返回一个确定的值参加表达式的运算。 int i=max(33,36); ⑶ 函数参数:函数调用作为一个函数的参数。 int i=max(33,max(36,56)); 【范例9-2】 求出两个数或三个数中的大数。 9.4.2 参数传递方式 函数调用时,实参和形参进行了数据的传递。根据实参向形 参传递数据的方式分为3种方式:按值传递,按地址传递和按 引用传递。这里先说按值传递和按引用传递。 1. 按值传递 也称传值。 形式:形参为普通变量,实参为表达式或变量,实参向形参赋值。 特点:参数传递后,实参和形参不再有任何联系。 注意:实参是表达式,故形参不可能给实参赋值。函数调用时, 系统为形参分配相应的存储单元,用于接收实参传递的数据。函数调 用期间,形参和实参各自拥有独立的存储单元。函数调用结束,系统 回收分配给形参的存储单元。 传值调用的优点:函数调用对其外界的变量无影响,最多只能用 return返回一个值,函数独立性强。 2. 按引用传递 又称传引用。引用即变量的别名,对别名的访问就是对 别名所关联变量的访问,反之亦然。“”称为引用符。 例如。 int i; int ai=i; //定义int型引用ai是变量i的别名 ai=15; //此时i的值也为15 i=100; //此时ai的值也为100 使用引用应注意。 ⑴ 定义引用时,应同时对它初始化,使它与一个类型相同的已有变量关联。 ⑵ 一个引用与某变量关联,就不能再与其它变量关联。 ⑶ 引用主要用作函数的形参和返回值。 按引用方式调用形式:形参为引用型变量,实参是变量 为引用型形参初始化。 特点:参数传递后,形参是实参的别名,修改了形参, 实参也随着发生变化。函数调用时,系统不再为形参分配 存储单元,形参就是在被调用函数中实参的别名,也就是 说它们是同一个存储单元。 9.4.3 函数的嵌套调用 C++语言不允许在一个函数的定义中再定义另一个函 数,即不允许函数的嵌套定义。但允许在一个函数的定义 中调用另一个函数,即允许函数的嵌套调用。 程序在执行过程中,如果遇到了对其他函数的调用,则 暂停当前函数的执行,保存下一条指令的地址(即返回地 址,作为从被调用函数返回后继续执行的入口点),并保 存现场,然后转到被调用函数的入口地址,执行子函数。 当遇到return 语句或者被调用函数结束时,则恢复先前保 存的现场,并从先前保存的返回地址开始继续执行。 调用sump函数 结束 main函数 sump函数 保存: 返回地址 当前现场 调用powers函数 保存: 返回地址 当前现场 powers函数 返回 返回 恢复: 主调程序现场 返回地址 恢复: 主调程序现场 返回地址 9.4.4 递归调用 C++允许在调用一个函数的过程中出现直接或间接调 用函数本身,这种情况称为函数的“递归”调用,相应的函 数称为递归函数。 递归调用有直接递归调用和间接递归调用两种形式。 直接调用本函数 在调用函数f的过程中,又要调用f函数。 int f(int x) { int y,z; z=f(y); return (2*z); } 间接调用本函数 在调用f1函数过程中要调用f2函数,而在调用f2函数过程 中又要调用f1函数。 int f1(int a) { int b; b=f2(a+1); } int f2(int s) { int c; c=f1(s-1); } 递归的过程有两个阶段 ⑴ 递推:将原有问题不断分解为新的问题,逐渐从未知向已知推进, 最终达到已知的条件,即递归结束的条件,这时递推阶段结束。例 如,求10!,可以这样分解。 10!= 9!*10 9!= 8!*9 … 2!= 1!*2 1!=1 ⑵ 回归:从已知的条件出发,按照递推的逆过程,逐一求值回归,最 后达到递推的开始处,结束回归阶段,完成递归调用。 1!=1 2!= 1!*2 … 9!=8!*9 10!=9!*10 【范例9-6】 求10! 【拓展训练】求斐波那契

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档