- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例1.10无法实现两个变量的值互换的程序。 #include iostream using namespace std; void swap(int a,int b) {int temp; temp=a; a=b; b=temp; //实现a和b的值互换 } int main( ) {int i=3,j=5; swap(i,j); couti,jendl; //i和j的值未互换 return 0; } 输出i和j的值仍为3和5。 例1.11 使用指针变量作形参,实现两个变量的值互换。 #include iostream using namespace std; void swap(int *p1,int *p2) {int temp; temp=*p1; *p1= *p2; *p2=temp; } int main( ) {int i=3,j=5; swap(i,j); couti,jendl; return 0; } 输出i和j的值为5和3。 (3)传送变量的别名。使用变量的别名做形参起到了和指针同样的作用,但更简单。 例1.12利用“引用形参”实现两个变量的值互换。 #include iostream using namespace std; void swap(int a,int b) {int temp; temp=a; a=b; b=temp; } int main( ) {int i=3,j=5; swap(i,j); couti=i j=jendl; return 0; } 输出结果为: i=5 j=3 对引用型形参的初始化是在函数调用时通过虚实结合实现的。 实际上,实参传给形参的是实参的地址,也就是使形参a和变量i具有同样的地址,从而使a和i共享同一单元。 通过上面的例子和分析,知道在c++调用函数时有两种传递数据的方式,一种是常用的方法:将实参的值传送给形参,形参是实参的一个拷贝;这种方式称为传值方式调用(call by value);另一种是将实参的地址传给引用型形参,这时形参与实参是同一个变量,这种方式称为引用方式调用(call by reference)。 对比上例使用引用比使用指针变量作函数形参的优点 : ①不必在swap函数中设立指针变量。指针变量要另外开辟内存单元,其内容是地址。而引用不是一个独立的变量,不单独占内存单元。 ②在main函数中调用swap函数时实参不必在变量名前加以表示地址。 ③使用指针变量时,为了表示指针变量所指向的变量,必须使用指针运算符*(如例1.1l程序内swap函数中的*pl,* p2),而使用引用时,引用就代表该变量,不必使用指针运算符*,swap函数更加简单。 ④用引用能完成的工作,用指针也能完成,但引用比指针的使用直观、方便,直截了当,不必“兜圈子”,容易理解。有些过去只能用指针来处理的问题,现在可以用引用来代替,从而降低了程序设计的难度。 5.对引用的进一步说明 (1)不能建立void类型的引用,如 void a=9; //错误 因为任何实际存在的变量都是属于非void类型的,void的含义是无类型或空类型,void只是在语法上相当于一个类型而已。 (2)不能建立引用的数组。如 char c[6]=”hello”; char rc[6]=c; //错误 企图建立一个包含6个元素的引用的数组,这样是不行的,数组名c只代表数组首元素的地址,本身并不是一个占有存储空间的变量。 (3)可以将变量的引用的地址赋给一个指针,此时指针指向的是原来的变量,如 int a=3; //定义a是整型变量 int b=a; //声明b是整型变量的别名 int *p=b; //指针变量p指向变量a的引用b,相当于指向a,合法 相当于P指向变量a,其作用与下面一行相同,即 int *p=a; 如果输出*p的值,就是b的值,也就是a的值。 (5)可以用const对引用加以限定,不允许改变该引用的值。如 int i=5; //定义整型变量i,初值为5 const int a=i; //声明常引用,不允许改变a的值 a=3; //企图改变引用a的值,错误 但是它并不阻止改变引用所代表的变量的值,如 i=3; //合法 (6)可以用常量或表达式对引用进行初始化,但此时必须用const作声明。如 int i=5: const in
您可能关注的文档
- 人教版新(2019)必修中外历史纲要(上)第4课_西汉和东汉——统一多民族封建国家的巩固_课件.pptx
- 公司员工招聘的方案设计.doc
- 人教版九年级化学第4单元 课题3水的组成同步练习题.doc
- 2020届绵阳一诊地理考试试卷评讲(详解).ppt
- 人教英语七年级上册Unit4Section B 1a—1e.ppt
- 第一节-练习题使用显微镜.ppt
- 历史必修1岳麓版第9课 北美大陆的新体制 .pptx
- 人教版生物选修一第2节 腐乳制作.ppt
- 北京课改版数学八上14.3《求简单事 件发生的可能性》word教案设计.doc
- 湘教版九年级上册数学 第四章 锐角三角函数 单元知识练习试题.doc
- 安徽版八上信息技术第三单元 活动3 秋游线路趣规划设计 作业(有答案).docx
- 备战2020中考化学考题专项训练——图表分析.doc
- 2020年河北省中考语文总复习课件:第18篇 湖心亭看雪.pptx
- 音乐教室使用计划.docx
- 九年级年前冬季教学策略.doc
- 人教版九年级十八章电功率专题 电热综合计算题(无答案).docx
- 冀教版语文七下《大铁椎传》word教案设计.doc
- 2019-2020年广东省潮州市八年级物理上册期中考试模拟试卷.docx
- 人教部编版八年级语文上册第六单元写作《表达要得体》教案设计.docx
- 2019—2020年吉林省长春市朝阳区八年级物理上册期中考试模拟试卷.docx
文档评论(0)