- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
根据例子思考 例: 定义:void Func(int x) {} 调用:int a = 5; Func(a); 思考:C++用值传递方式进行上述参数传递。究竟如何实现的? * 参数传递过程 步骤:将a的值复制给x; 实质:从a所在的地址单元1000中取出值5,然后将该值复制至变量x所在的地址单元5000中 5 * 根据例子思考 例: 定义:void Func(int x) {x = 10;} 调用:int a = 5; Func(a); cout a; 思考:程序运行结果是? * 参数传递过程 步骤1:将a的值复制给x; 实质:从a所在的地址单元1000中取出值5,然后将该值复制至变量x所在的地址单元5000中 5 10 步骤2:改变x的值; 实质:将x所在的地址单元5000中的值改为10 x的值改变了, a的值会改变吗? * 根据例子思考 例: 定义:void Func(int* x) {*x = 10;} 调用:int a(5); Func(a); cout a; 思考:如何实现上述的参数传递? * 参数传递过程 步骤1:将a的地址复制给x; 实质:将a的地址1000写入x所在的地址单元5000 1000 10 步骤2:改变x储存的地址中存的值; 实质:取出x中储存的地址1000,然后将该地址中的值改为10 a的值改变了吗? x的值变了吗? * 函数的参数传递(2/4) 形参的变量作用域为“函数内部” 非引用类型的形参的初始化,是通过复制实参的值完成的! 非引用类型的形参如果为指针,实现的是对该形参的间接引用 用指针进行间接引用有哪些弊端? 什么情况不宜使用“非引用类型的形参”? * 函数的参数传递(3/4) 以下情况不适宜“复制实参”: 当需要在函数中修改实参的值时 当需要以大型对象作为实参传递时 当没有办法实现对象的复制时 C++提供了更好的参数传递方式:引用传递 * 何为引用? 引用(reference)就是对象的另一个名字 引用语法:在变量名前加“” 例:int val; int refVal = val; 引用必须用 与该引用同类型的对象 初始化 引用是复合类型(compound type) * 注意! 引用必须用 与该引用同类型的对象 初始化 引用不可重新绑定(一旦引用,终身引用) * 思考题 找出下述代码中的错误: int iVal = 1000; short refVal = iVal; int refVal2; int refVal3 = 10; * 思考题 说明下述代码的意义: int i = 1000, i2 = 2000; int r = i, r2 = i2; int i3 = 1000, ri = i3; int r3 = i3, r4 = i2; * 思考题 下述代码输出什么? int i, ri = i; i=5;ri=10; cout i ri endl; * 函数的参数传递(4/4) 以下情况应使用“引用形参”: 当需要在函数中修改实参的值时 当需要以大型对象作为实参传递时 当没有办法实现对象的复制时 * 思考 使用引用有好处吗? 的作用是? *的作用是? 能做“取地址”操作的条件是? 能做“解引用”操作的条件是? * 思考 使用函数的优势? 使用函数的系统代价? * 内联函数(1/2) #define 的作用: 语法:#define A B 作用:在整个代码中,A都是B的代号 编译时编译器将代码中所有的A替换成B inline 的作用: 语法:inline 函数定义 作用:告诉编译器,这个函数请当作内联函数处理 编译时编译器将代码中所有的该函数调用替换成该函数体内的代码 * 内联函数(2/2) 内联函数示例: inline double CalArea(double radius) { return 3.14*radius*radius; } * 思考 什么样的函数适合指定为内联? inline 的作用仅仅是建议而已 是否内联由编译器决定 不用inline指定,也可能会被编译为内联 * 带默认形参值的函数 默认形参值的作用是: 如果你不告诉我该做什么,我就按我默认的方式工作 默认的形参值必须按照从右向左的顺序声明 * 思考题 下述哪些是非法的?为什么? int add(int x, int y = 5, int z = 6) {……} int add(int x = 1, int y, int z = 6) {……} int add(int x = 1, int y = 5, int z) {……} int add(int x = 1, int y, int z) {……} int add(int x = 1, int y =
您可能关注的文档
- 2014年Android系统的简介.ppt
- 2014年android系统架构.ppt
- 2014年Android系统简介(精简版).ppt
- 2014年Android系统简介.ppt
- 2014年Android项目目录结构.ppt
- 2014年android序列化.ppt
- 2014年Android学习指南之Layout 布局.ppt
- 2014年Android学习资料之使用 HTML 5 开发新的可视化 UI 特性.ppt
- 2014年Android学习资料之使用 HTML 5 开发新的可视化 UI 特性61821820.ppt
- 2014年Android应用程序.ppt
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
最近下载
- 四川省绵阳市江油市2020-2021学年九年级上学期期中物理试题(含答案).docx VIP
- (新版)危害因素辨识与风险防控题库及答案解析 .pdf VIP
- 2022年华南农业大学工作人员招聘考试试题及答案.docx VIP
- 人教版小学五年级下册体育教案全集.pdf VIP
- 国有企业基层组织工作条例(试行)在线测试.doc VIP
- 初中常见化学式的默写.docx VIP
- 《基础生态学》(第二版_牛翠娟、孙儒泳、李庆芬)课后思考题答案.doc VIP
- essbase BIEE__学习笔记.ppt VIP
- 初中物理《内能的利用》真题演练含解析.pdf VIP
- TF02EP全自动口服液灌装机使用规程.pdf VIP
文档评论(0)