我是一名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
中的内容是什么?
答案 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