在c ++中获取表达式的含义

时间:2017-09-05 13:54:16

标签: c++ pointers

我正在读取 c ++ 中的遗留代码,它定义了一个数组,然后分配给一个变量(见下文)。虽然我过去使用过指针和引用,但我不确定这个表达式的含义。问题:
1.这个表达的含义是什么? 2.当(WORD *)中有另一个指针时,为什么外部指针是必需的?
提前谢谢!

BYTE txbuf[16]; 
...
WORD crc = *((WORD*)(&txbuf[2]));

2 个答案:

答案 0 :(得分:5)

问题2首先:
没有"外部指针" - 内部*是转换为指针类型的一部分,外部*取消引用结果指针。

问题1:
将其分解为部分,意味着与此相同:

BYTE txbuf[16]; 
...
BYTE* byte_pointer = &txbuf[2];
WORD* word_pointer = (WORD*) byte_pointer;
WORD crc = *word_pointer;

答案 1 :(得分:4)

  • &txbuf[2]:获取txbuf内第三项的地址。

  • (WORD*)(&txbuf[2]):C风格将&txbuf[2]的结果投射到WORD*

  • *(/* ... */):取消引用整个内容,生成WORD&