首页 > 解决方案 > 奇怪的 C++ 类型转换

问题描述

在遵循openGL 教程时,我遇到了这段代码:

unsigned char header[54];

// [...]

unsigned int dataPos = *(int*)&(header[0x0A]);

我不明白*(int*)&. 为什么不简单地使用(int)

标签: c++

解决方案


由于header是一个char数组,因此这里的强制转换将 header 的地址置于0x0A使其成为int*指针的位置,并从该地址读取,就好像它是一个int. 它有效地从位置0x0A开始读取标头的 4 个字节(或系统上的 int 大小)并将它们打包成一个 int。

简单(int)转换只会将位置0x0Afrom的值转换charint,但不会获得其他 3 个字节的值。


推荐阅读