C++第6章教程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 指针 6.9.1 变量的引用 引用是一种新的变量类型,它的作用是为一个变量起一个别名。 例: int a; int b=a; // 声明b是a的引用 b是a的别名,a和b的作用相同,都代表同一变量 b和a占内存中的同一个存 储单元,它们具有同一地 址。如果a的值是20,则b 的值也是20。 引用声明符 int a //引用 couta //取址 注意: 在声明一个引用类型变量时,必须同时使之初始化,即声明它代表哪一个变量。 在声明变量b是变量a1的引用后, b不能再作为其他变量的引用。 int a1,a2; int b; int a1,a2; int b=a1; int b=a2; 必须定义同时 进行初始化 企图使b又变成a2 的引用(别名)是 不行的 6.9.2 引用的简单使用 例6.17 引用和变量的关系。 b的值变化了,a的值也应一起变化 a 的值变化了,b的值也应一起变化 6.9.3 引用作为函数参数 回顾:函数传递的两种方式 (1) 传递变量的值(单向) (2) 传递变量的地址(双向) C++提供新的传递数据的方式 (3)传送变量的别名( ?) 将引用作为函数参数,可以扩充函数传递数据的功能。 例6.18 传递变量的值 3 5 3 5 调用开始 j b a i b a 3 5 j 调用结束 5 3 i 不能实现i和 j值的交换 例6.19 指针作参数,实现两个变量值互换。 void swap(int *,int *); j i j p1 p2 3 i 5 调用开始 j i j p1 p2 5 i 3 调用结束 *p1等价于i 例6.20 引用作形参,实现两个变量的值互换。 swap函数已经包含在std里,自己定的函数并没有起作用 把自己定义的函数改个名字即可 a,b是引用型变量 传递地址 思考:引用与指针分别作形参时的不同? 形参:引用型变量 指针变量 内存:引用型变量只是个别名,不单独占内存空间;指针变量要另外开辟内存单元。 实参:变量名 变量地址 引用型变量 指针变量 例6.21 对3个变量按由小到大的顺序排序。 调用sort函数时使形参i,j,k成为实参a1,b1,c1的引用 实现了对i,j,k排序,同时实现了对a1,b1,c1排序 如何区别a的含义 1.声明引用变量 前面有类型符 int a 2.取地址 前面没有类型符 cout a * 声明变量b为引用类型,并不需要另外开辟内存单元来存放b的值。 引用声明符区别于 if (a b)位与 int *p =a1;取地址符 * 在声明变量b是变量a的引用后,在它们所在函数执行期间,该引用类型变量b始终与其代表的变量a相联系,不能再作为其他变量的引用 * 有了变量名,为什么还需要一个别名呢?C++之所以增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能。 * 形参和实参占用不同的存储单元。 * 实际上,上机在VC6上运行并没有实现i,j值的互换, 原来是swap函数已经被包含在了std里,自己定义的交换代码并没有起作用,把自己定义的函数改个名字即可, 或直接用swap1( i,j)就能实现互换? swap其实是一个库函数,而且是一个模板函数 其源码为: templateclass _Ty inline void swap( _Ty_X, _Ty_Y) { ? _Ty _Tmp=_X; ? _X=_Y; ? _Y=_Tmp; } * 可以通俗地说: 把变量i的名字传给引用变量a,使a成为i的别名。 * 当看到a这样的形式时,怎样区别是声明引用变量还是取地址的操作呢?当a的前面有类型符时(如int a),它必然是对引用的声明;如果前面无类型符(如couta),则是取变量的地址。 * 声明变量b为引用类型,并不需要另外开辟内存单元来存放b的值。 引用声明符区别于 if (a b)位与 int *p =a1;取地址符 * 在声明变量b是变量a的引用后,在它们所在函数执行期间,该引用类型变量b始终与其代表

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档