c++ - 奇怪的 C++ 类型转换
问题描述
在遵循openGL 教程时,我遇到了这段代码:
unsigned char header[54];
// [...]
unsigned int dataPos = *(int*)&(header[0x0A]);
我不明白*(int*)&
. 为什么不简单地使用(int)
?
解决方案
由于header
是一个char
数组,因此这里的强制转换将 header 的地址置于0x0A
使其成为int*
指针的位置,并从该地址读取,就好像它是一个int
. 它有效地从位置0x0A开始读取标头的 4 个字节(或系统上的 int 大小)并将它们打包成一个 int。
简单(int)
转换只会将位置0x0A
from的值转换char
为int
,但不会获得其他 3 个字节的值。
推荐阅读
- python - 应用程序在另一台计算机上执行时以错误的大小显示小部件
- node.js - 在同一页面上使用不同的数据库
- jquery - 在物化选择器上禁用假期
- csv - How to output an array to a comma-deliniated string?
- javascript - 在没有 react-ga 的情况下使用 analytics.js
- python - Python:将函数存储在变量中时执行
- java - 空白位置查找
- reactjs - webpack构建后图像路径错误
- r - Creating a row-wise average based off groups of variables in another column
- javascript - 如何将多链节点与应用程序连接?