【发布时间】:2021-07-16 09:06:31
【问题描述】:
有人能解释一下这里发生了什么吗?
#include "iostream"
int main(int argc, char const *argv[]) {
unsigned long var = 0x04030201;
unsigned char* ptr = NULL;
ptr = (unsigned char*) &var;
ptr[2] = 0x05;
std::cout << std::hex << var << '\n';
return 0;
}
输出:0x4050201
【问题讨论】:
-
你期望的输出是什么?你认为
ptr[2] = 0x05会做什么? -
C++ 允许你做各种奇怪的、奇妙的和完全愚蠢的事情。和 C++ 中的许多其他东西一样,这些都是基于上下文的奇怪、美妙和完全愚蠢的变化。
标签: c++ pointers hex dereference