您的位置:首页 > 编程语言 > C语言/C++

c++ 引用

2016-07-14 10:25 127 查看

实质

实质上就是一个常量指针

void * const p;


例如:

int a = 2;
int &p = a;


等价于

int* const  p = &a;


看下面的例子:

float a = 0.0;
float b = 1.0;
cout << (int &) a << endl;
cout << (int &) b << endl;


运行结果?

运行结果?

运行结果?

0
1065353216(即0x3F80 0000)


原因是:

(int &) a ---->> *((int* const)&a)


要强制转换为int &类型引用时,要先取a的地址&a,这时的地址类型是float型的; 然后才能进行强制转化为int型,最后再取出该地址内中的内容。

由于float和int在内存中的存储方式不同,因此打印出来会不同。当然,0在内存中不论是float(4bytes)还是int(4bytes)内存空间都是保存的0,因此结果还是为0;然而1.0在内存中保存的方式就不同咯,具体还要看标准了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++