中国地质大学C++课件06.ppt

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

函数调用机制 §6.5变量作用域及存储类型 例:下面是使用命令行参数求两个整数的最大公约数的程序。 //*** gcd.cpp *** #include #inclued int gcd int,int ; void main int argc, char *argv[] int a,b,result; if argc! 3 cout “Enter two integer data:”; exit 0 ; a atoi argv[1] ; b atoi argv[2] ; result gcd a, b ; cout result; int gcd int u, int v int temp; while v! 0 temp u%v; u v; v temp; return u ; 函数定义,直接或间接地自己调用自己。 递归调用程序简洁明了,可读性强,但“时空”开销大。 计算n! fa n n*fa n-1 n 1 fa 1 1 n 1 2.递归函数 Recursive Function 调用 下面是求n!的函数 long fact int n if n 1 return 1; else return n*fact n-1 ; 如: n 等于4,则递归调用过程如下; fact 4 4 * fact 3 2 3 * 2 3 * fact 2 2 * fact 1 1 2 * 1 6 4 * 6 24 大多数递归函数都能用非递归函数代替。 由于自调用过程在函数内必须设置某些条件,当条件成立时终止自调用过程,并使程序控制逐步从函数中返回。 递归调用机制是栈数据结构实现的。 函数之间由参数传递和返回值联系。 例6.8 用递归函数求10!的值 #include iostream.h void main long fa int ; cout 10! fa 10 endl; long fa int n if n 1 return n*fa n-1 ; else return 1; 运行结果: 10! 座机电话号码 例6-4,用递归方法求两整数的最大公约数。 #include iostream.h void main int a 10,b 28; int gcd int,int ; cout a “and b LCD:” gcd a,b endl; int gcd int a,int b if a%b 0 return b; else return gcd b,a%b ; 运行结果: 10 and 28 LCD:2 §6.2 函数重载 用一个函数名定义多个功能相近的函数(参数个数,类型不同)称函数重载。 编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪个函数。 P79 例5-4 求两个或三个不同类型数的最大值 §6.3 带缺省形参的函数 函数定义时,预定义缺省的形参值,调用时,若无实参,则使用缺省的形参值,利用该特性, 使函数的使用更加灵活。 说明: (1)缺省值应在函数原型中给出。 (2)缺省值必须从右到左顺序定义。 例6-6 带缺省形参举例 §6.4 内联函数 编译程序将功能简单,规模较小,使用频繁的函数体嵌人到每一个调用语句处,以节省时空开销。 内联函数的声明: 在说明函数原型前加inline 形式: inline 类型说明符 函数名 形参表 ; 说明: (1)内联函数应“先声明,后调用”。 inline可出现在函数原型前,也可出现在定义函数前。 (2)一般适用于小程序(结构简单,语句少,无循环和switch结构)。 例6-6 内联函数举例: 一、程序的内存区域 程序在系统中运行时,操作系统为其分配的存储空间可划分为如下的四个区域,每个区域存放不同的数据。 局部数据 动态数据 全局数据,静态数据 程序代码 Code area Data area Heap area Stack area 数据区——全局生命期及作用域 静态生命期及作用域 栈 区 ——局部生命期及作用域 堆 区 ——动态生命期 当数据存放在不同区域时,具有不同的生命期和作用域。 生命期也称为生存期,即标识符在程序运行中的时限。 全局生命期指标识符在程序运行的全过程中存在。 局部生命期指标识符在程序运行的局部阶段存在。 作用域是指标识符在程序中的有效范围。作用域开始于标识符的说明处。 可见性是分析在某一位置标识符的有效性,即表示该标识符在该位置是否可以被调用。它是从另一角度表现标识符的有效性。 标识符的生命期和作用域与标识符在内存中的存储方式密切相关。 二、全局变量 Global V

文档评论(0)

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

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

1亿VIP精品文档

相关文档