这意味着什么?它是关于c ++中的DWORD变量

时间:2016-07-13 08:16:40

标签: c++ c windows

代码:

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值。如果你指出代码的含义会更好。

3 个答案:

答案 0 :(得分:2)

pdw [0]将arBytes的前4个字节重新解释为DWORD类型。

由于DWORD和BTYE不是兼容类型,因此未定义示例的行为。

答案 1 :(得分:2)

对于:

type* identifier;

解除引用可以通过两种方式完成:

  • * identifier - 指针方法
  • identifier [0] - 数组方法

因为为指针定义了数组样式操作。所以:

  

identifier[0]*(identifier+0)完全相同   *identifier

来到你的问题:

pdw[0]只是*pwd,而DWORD value

答案 2 :(得分:0)

让我们说sizeof(DWORD)=4sizeof(BYTE)=1。 所以4 BYTEs = 1 DWORD

&arBytes[0]。这意味着数组arBytes中第一个BYTE的地址。

pdw=(DWORD*)&arBytes[0];。类型转换(DWORD*)表示您现在可以通过BYTEs以4个块的形式访问arBytes pdw4096/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],其中BYTEspdw[0]。 同样地,DWORD是一个BYTES,它是4 BYTE的一大块,因此最左边的arBytes[0]块是BYTE,最右边是arBytes[3] }是{{1}}。