[英]cast void type pointer in an array
假设我有一个Uint数组: Uint myarray[10]
。 Uint
是无符号的16位整数。 我还定义了一个void
类型指针
void * arrayHandle = &myarray;
添加一些偏移量,以便arrayHandle
指向myarray[3]
(在此处标记,将在另一个测试中更改偏移量)
arrayHandle = (Uint *)arrayHandle + 3;
然后将一个32位浮点类型数据分配给arrayHandle
指向的内存
*((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
。
数组内容完全相同! 谁能告诉我为什么?
数组已经是一个指针,请尝试使用void * arrayHandle = myarray
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.