码迷,mamicode.com
首页 > 编程语言 > 详细

C++中关于引用及符号&的问题

时间:2020-02-20 00:11:37      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:oid   行操作   关于   形参和实参   class   pre   参数传递   上进   数据结构   

今天在学习数据结构的时候,出现了这样一段算法结构:

1 void swap(int &p1,int &p2)
2 {
3   int p;
4   p=p1;
5   p1=p2;
6   p2=p;            
7 }

 

这段算法,可以实现swap(a,b)两个实参的交换。于是百思不得其解,int &p1到底是什么类型?

课本上介绍了,这种类型在C++中为引用类型,查阅资料可知,引用是某一变量的别名,对引用的操作实际上和对变量的操作是一样的。引用本身不占存储单元,它并不是新定义的一个变量。所以说,对引用求地址,就是对目标变量求地址,目标变量和它的引用实际上是共享一块存储空间的。在数据结构的书上介绍说,传引用的方式是双向的值传递,实参的值传给形参,在函数调用之后,形参的值回传给实参,形参和实参的值同步发生改变。返回本例,在(int &p1,int &p2)之后,实质上进行了int &p1=a;int &p2=b;这样的操作,意思就是p1为a的引用,p2为b的引用,所以在函数中对p1,p2进行操作,就是对引用的操作,实质上就是对实参a,b的操作,所以最终得以swap函数的实现。

而对比如下算法,

1 void swap(int x,int y)
2 {
3   int p;
4   p=x;
5   x=y;
6   y=p;  
7 }

 

在函数调用的时候,在内存中为形参x,y分配了存储空间,而在调用结束的时候,形参的内存被释放,所以不能实现交换。

今天所说的只是引用作为参数传递的一种作用。在C++中还有其他的作用,等以后有学习C++的时候再做探讨吧!

柳暗花明又一村。让我纠结了半天的问题,终于得以解决,快哉快哉!通过今天的学习,我初步了解了C++语言的魅力所在。以后如果有时间,我会考虑学习C++的,扩展自己的知识。

C++中关于引用及符号&的问题

标签:oid   行操作   关于   形参和实参   class   pre   参数传递   上进   数据结构   

原文地址:https://www.cnblogs.com/Sycblog/p/12333873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!