我们可以通过将该对象的点T转换为a 来查看类型T*对象的表示char*.至少在实践中:
int x = 511;
unsigned char* cp = (unsigned char*)&x;
std::cout << std::hex << std::setfill('0');
for (int i = 0; i < sizeof(int); i++) {
std::cout << std::setw(2) << (int)cp[i] << ' ';
}
Run Code Online (Sandbox Code Playgroud)
这输出511我的系统的表示:ff 01 00 00.
(肯定)这里发生了一些实现定义的行为.哪个演员阵容允许我将一个转换int*为一个unsigned char*转换,哪个转换是否需要转换?我一投演就调用了未定义的行为?我可以投这样的任何T*类型吗?这样做我能依靠什么?