代码:
BYTE arBytes[4096];
//write to the arBytes,so the arBytes already not null,then read continue
DWORD* pdw;
pdw=(DWORD*)&arBytes[0];
if(pdw[0]==dwValue) //here is what I what to ask
//some operate
}
我的问题是:pdw[0]
是什么意思?它是DWORD*
变量,dwValue
也是DWORD
值。如果你指出代码的含义会更好。
答案 0 :(得分:2)
pdw [0]将arBytes的前4个字节重新解释为DWORD类型。
由于DWORD和BTYE不是兼容类型,因此未定义示例的行为。
答案 1 :(得分:2)
对于:
type* identifier;
解除引用可以通过两种方式完成:
因为为指针定义了数组样式操作。所以:
identifier[0]
与*(identifier+0)
完全相同*identifier
来到你的问题:
pdw[0]
只是*pwd
,而DWORD value
。
答案 2 :(得分:0)
让我们说sizeof(DWORD)=4
和sizeof(BYTE)=1
。
所以4 BYTEs
= 1 DWORD
&arBytes[0]
。这意味着数组arBytes
中第一个BYTE的地址。
pdw=(DWORD*)&arBytes[0];
。类型转换(DWORD*)
表示您现在可以通过BYTEs
以4个块的形式访问arBytes
pdw
个4096/4=1024 DWORDs
。也就是说,现在您可以通过pdw
访问总共pdw
。这也意味着,DWORDs
现在是1024 pdw[0]
的数组。
pwd
表示访问if(pdw[0]==dwValue)
的第一个元素。
dwValue
只是意味着您要将arBytes
与组合BYTEs
的前4个元素所形成的值进行比较。
此处合并表示排列DWORD
以使其形成1 DWORD
。
自4 BYTEs
= 1 DWORD
以来,我们可以说[B0][B1][B2][B3]
表格如下[B0], [B1], [B2] and [B3]
,其中BYTEs
为pdw[0]
。
同样地,DWORD
是一个BYTES
,它是4 BYTE
的一大块,因此最左边的arBytes[0]
块是BYTE
,最右边是arBytes[3]
}是{{1}}。