【发布时间】:2015-08-04 21:59:11
【问题描述】:
假设我有一个 Uint 数组:Uint myarray[10]。 Uint 是无符号 16 位整数。
我还定义了一个void 类型指针,这样
void * arrayHandle = &myarray;
添加一些偏移量,使arrayHandle 指向myarray[3](在此处标记,将在另一个测试中更改偏移量)
arrayHandle = (Uint *)arrayHandle + 3;
然后给arrayHandle指向的内存分配一个32位浮点型数据
*((float *)arrayHandle) = 1234.5678;
32位1234.5678可以表示为两个16位Uint原始数据,其中十进制的高16位是21035,十进制的低16位是17562。
毕竟我去查数组,找到myarray[2] = 21035和myarray[3] = 17562。
但是,当我回去更改偏移量时,arrayHandle 指向 myarray[2]
arrayHandle = (Uint *)arrayHandle + 2;
并进行类似的浮点赋值。我发现myarray[2] = 21035 和myarray[3] = 17562。
数组内容一模一样!谁能告诉我为什么?
【问题讨论】:
-
顺便说一句,你要做什么?也许你可以使用联合?
-
你知道
&myarray确实不计算为Uint*类型的指针,但计算为Uint (*)[10]类型的指针,不是吗?