【发布时间】:2016-05-15 01:28:43
【问题描述】:
当我运行这段代码时:
uint8_t stackVar = 0;
void* ptr = &stackVar;
uint8_t& ref = reinterpret_cast<uint8_t&>(ptr);
std::cout << (void*)&ref << std::endl;
std::cout << ptr << std::endl;
std::cout << (void*)&stackVar << std::endl;
我得到这个输出:
0x22fe30
0x22fe3f
0x22fe3f
至少在我的估计中,我应该为所有这三个陈述得到相同的数字。这是怎么回事?
【问题讨论】:
-
你在猜测引用是如何实现的
-
&ref是指针引用的地址。为什么你会期望它等于指针本身? -
我认为 OP 很困惑
&有两个含义。第一个 cout 中的&表示address-of,而不是reference。
标签: c++ pointers reference memory-address