2013-12-09 39 views
1

我是一個Java開發人員,對指針知之甚少。我有下面的C++代碼,我想知道(別人寫的):將ULONGLONG分配給16字節數組的結果是什麼?

ULONGLONG passedValue; 
BYTE myArr[16]; 
memset(myArr, 0x00, sizeof myArr); 
*((ULONGLONG *) myArr) = passedValue; 

雖然我明白,memset方法調用填補了myArr字節數組(大小16)用0,我我不確定最後一行會做什麼。

根據MSDN,ULONGLONG is 8 bytes ...而myArr是16個字節。最後一條語句執行後,myArr中將會出現什麼?

+0

我沒有看到** iv **的定義。 – David

+0

myArr與passedValue有什麼關係? –

+0

對不起guys..copy粘貼錯誤。最後一行應該是*((ULONGLONG *)myArr)= passedValue; – user2869520

回答

0

此術語(ULONGLONG *) myArr將把myArr轉換爲指向ULONGLONG類型的指針。然後,*((ULONGLONG *) myArr)是指針指向的值。

而且,

*((ULONGLONG *) myArr) = passedValue; 

分配passedValue到​​陣列的第一8字節。

passedValue 00 00 00 00 00 00 00 00 
^^^^^^^^^^^ 
8 bytes 
+0

感謝您的快速回答:)。 – user2869520

+0

@ user2869520:不客氣。 – David

相關問題