[英]Printing addresses of variables
当我运行此代码时:
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
至少在我的估计中,对于这三个语句,我应该得到相同的数字。 这里发生了什么?
uint8_t& ref = reinterpret_cast<uint8_t&>(ptr);
您正在将指针( void*
)转换为引用。 这不会导致相同的uint8_t
,因为它将引用您从void指针创建的临时uint8_t
。 并且由于创建了新的uint8_t
,因此您将获得不同的地址。
也许你的意思是uint8_t& ref = reinterpret_cast<uint8_t&>(stackVar);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.