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

怎么得到“引用”变量本身自已的地址

2013-07-29 
如何得到“引用”变量本身自已的地址?int a5,b7int &ca引用类型是一个怪怪的类型,它是指针类型的一个改

如何得到“引用”变量本身自已的地址?
int a=5,b=7;
int &c=a;

引用类型是一个怪怪的类型,它是指针类型的一个改进,直接用地址表示另一个单元,
上面的c就是引用变量;
所有对c的操作最终将针对目标单元a,包括取地址(&c)将是目标变量的地址,而得不到
它自已的地址;
如何有办法 取到c的地址呢? 



[解决办法]
这个&不一定被实现为一个指针,也就是说它没有地址,这样效率更高。

虽然很多情况下 & 被实现为一个指针,但标准并没有要求编译器强制引用实现为一个指针。

如果不被实现为一个指针,那么就没有地址,不占用任何内存空间。
[解决办法]
我认为“引用”变量仍要占单元空间,存放的是一个地址,但编译器阻止你对它本身的任何访问,
从一而终总是指向初始的目标单元,高手可以用汇编语言访问它的单元,在汇编里,引用的本质
就是“间接寻址”,格式: [目标地址]
   合法的办法,只能用非法的办法了,利用引用的上一单元的地址,假设是连续分配的,
就是找到引用的地址了.
全局变量
int a=5,b=9;
int u=0;       // u的下一地址就是x的
int &x=a;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int **p=(int **)&u;
    p[1]=&b;      // 下一地址就是x,将它改到b的地址
    Caption=x;    //  呵呵,指到了b,是不是
}
结论:引用也是变量,里面存放的目标地址,只要你有本事改变这个地址,
它就改变了引用对象。

热点排行