首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于二次引用,该怎么解决

2012-03-11 
关于二次引用昨天发了一帖问关于引用的是怎么实现的,有的观点是用指针实现的,又的观点是与指针没有关系,还

关于二次引用
昨天发了一帖问关于引用的是怎么实现的,有的观点是用指针实现的,又的观点是与指针没有关系,还有的观点是const指针,在这里我姑且不管到底是怎么实现的,我问这个问题其实就是想搞清楚

关于引用的引用

大家都知道二次指针,比如   我可以
int   **p;
int   *pA;
int   a=1;  
pA=&a;
p=&pA;
这样的话我就可以通过p来操作变量a.

那么大家看看我下面的程序,我要让三个数从小到大排出来

用二次引用可以这样做

#include "stdafx.h "
#include   "iostream "
using   namespace   std;

void   swap(int   &X,int   &Y)             //两个数的交换
{
        int   temp;
        temp=X;
                X=Y;
Y=temp;
}
void   exchange(int   &A,int   &B   ,int   &C   )
{
if(A> B)   swap(A,B);
if(A> C)   swap(A,C);
if(B> C)   swap(B,C);
cout < <A < < "   " < <B < < "   " < <C < <endl;
}


int   _tmain(int   argc,   _TCHAR*   argv[])
{
int   A=3;
int   B=2;
int   C=1;
exchange(A,B,C);
return   0;
}

经过运行发现没有错误,大家可以看到,
exchange(A,B,c)
是通过引用来传值的
然后在
swap(A,B)里
我把已经是引用的A,B
又做了一次应用
那么这个二次引用是否可以理解为还就是最开始的A,B,C本身呢,
不是说引用就是起了个别名,其实还是使用的原来的空间。
请大家给分析分析



[解决办法]
任何在引用上的操作,都直接关联到原始对象,
所以
int a=100;
int&b=a;
int &c=b; //c仍然为a的引用
[解决办法]
引用并不产生实体对象,也就是不新开辟内存空间储存对象,因此引用不占内存空间,引用的引用依然指向原先的对象。

热点排行