将ULONGLONG分配给16字节数组的结果是什么?

时间:2013-12-09 08:22:40

标签: c++ pointers memset

我是一名Java开发人员,对指针知之甚少。我有以下C ++代码(其他人写的),我试图理解:

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

虽然我理解memset方法调用用0填充myArr字节数组(大小为16),但我不确定最后一行是什么。

根据MSDN,ULONGLONG is 8 bytes ...而myArr是16个字节。执行完最后一个语句后myArr中的内容是什么?

1 个答案:

答案 0 :(得分:0)

此术语(ULONGLONG *) myArr会将myArr转换为指向ULONGLONG类型的指针。

然后,*((ULONGLONG *) myArr)是指针指向的值。

*((ULONGLONG *) myArr) = passedValue;

passedValue分配给myArr BYTE数组的前8个字节。

passedValue 00 00 00 00 00 00 00 00
^^^^^^^^^^^
8 bytes