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