第八章 引用(Reference).ppt_第1页
第八章 引用(Reference).ppt_第2页
第八章 引用(Reference).ppt_第3页
第八章 引用(Reference).ppt_第4页
第八章 引用(Reference).ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数参数可以通过传值和传址两种方式调用函数 还可以通过引用传递参数 本章介绍引用的概念 用引用传递函数的方法 明确引用与指针的区别 第八章引用 Reference 在程序中 引用可作为目标变量或对象的别名而使用 对引用的操作实际上就是对目标变量或对象的操作 建立引用的方法 intvalue int rvalueinitialized说明rvalue是对整型数据的引用 并初始化为整型变量value的引用 8 1引用的概念 Areferenceisanalternativenameforvariableorobject Toensurethatareferenceisboundtoavariablenameoranobjectname wemustinitializethereference 注意1 引用在说明时必须初始化 初始化变量必须是已定义的变量 2 引用不是变量 只是替代某个变量的别名 3 引用不占内存空间 引用的地址与绑定的变量相同 在程序中对引用的访问就是对其绑定的变量的访问 includevoidmain intintone int 运行结果为 intone 5rint 5intone 25rint 25 例如 下面程序说明引用与其绑定的变量之间的关系 注意 引用运算符与取地址运算符使用了相同符号 输出变量count的地址 如果程序中取引用的地址 它返回引用绑定的目标变量的地址 2 对引用赋值 就是对绑定的目标变量的赋值 3 若说明一个引用为T 8 2引用的操作 4 可以说明对指针变量的引用 例如 int a int includevoidmain intone int 下面程序说明引用与其绑定的变量间的赋值及地址间的关系 cout rone rone endl cout 输出结果 one 5rone 5 one 0110 F150 rone 0110 F150one 28two 28rone 28 one 0110 F150 two 0110 F14E rone 0110 F150 注意引用被重新赋值后 引用地址仍然绑定在目标变量地址上 即引用被初始化后不会指向其他不同的变量 在函数调用中 已经介绍了传值和传址两种方式进行函数调用的特点 使用引用传递参数也可以进行函数调用 其方法是 使用传址调用的机理 采用传值调用的形式 这样既实现了双向传送 又增加了程序的可读性 下面以swap函数为例说明函数调用的三种方式 8 3用引用传递函数参数 下面的程序用引用改写swap 函数的调用方式 includevoidswap int 注意 引用可能存在调用的二义性问题 例如 下面程序代码中 两个重载函数的形参数分别为整型变量 和整型变量的引用 函数调用方式又不同 将引起编译错误 voidfn ints voidfn int 无法确认调用哪一个fn 函数 结果 beforeswap x 5 y 6afterswap x 6 y 5 使用传值调用方式调用函数时 函数只能返回一个值 如果需要从函数调用中返回两个以上的值 可以采用引用 和指针方式实现 取双向传递后的实参数值 即可达到这个目的 例如 下面程序返回三个值 两个是引用 另一个是函数返回值 函数返回值作为从键盘输入数据的正误判断 8 4返回多个值的函数调用 includeintfactor int int intfactor intn int 结果 Enteranumber 0 20 3number 3squared 9cubed 27 使用const修饰符说明的引用称为常引用 该引用所引用的变量或对象不能被更改 其定义格式如下 const其中r是一个常引用 它所引用的变量或对象的值不能被改变 因此程序中出现r 12 3这些赋值语句是非法的 使用常引用的好处是 既不会更改所引用的对象 保证数据的安全 又没有传值所需的实参向形参拷贝过程 这将会改善程序的运行效率 8 5常引用 例如 下面的程序传递一个常量引用 includedouble 结果 fnbeingcalled thevalueis 200 8250 8fnbeingcalled thevalueis 30 0280 8 如果将上面的程序改为传递一个常量指针 返回一个指针 则程序如下 includedouble fn constdouble pd 形参为指针 staticdoublead 50 ad pd cout fnbeintcalled thevalueis pd endl return 结果 fnbeingcalled thevalueis 200 8250 8fnbeingcalled thevalueis 30 0280 8 对引用的初始化 可以是变量 可以是常量 也可以是一定类型的堆空间变量 用堆空间变量初始化的引用 要求不使用该引用时要释放堆空间 8 6返回堆中变量的引用 includeintcirclearea double pd newdouble if pd cout rd cout Theareaofcircleis rd rd 3 14 endl deletepd return0 voidmain if circlearea cout Programfailed n elsecout Programsucceed n 结果 Theradiusis 12Theareaofcircleis 452 16Programsucceed 在C 中 使用引用比使用指针 使程序代码具有更好的可读性 使用引

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论