[英]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.