尝试做的增量和减量分配是什么?

时间:2012-11-21 21:55:09

标签: c iar

*pSpiTxBuf++ = CC2520_INS_SFLUSHRX; // get rid of this packet
*pSpiTxBuf-- = CC2520_INS_SFLUSHRX; // double flush [CC2520 Bug#1]

任何人都可以向我解释上述两条线正在尝试做什么吗? pSpiTxBufuint8_t *

3 个答案:

答案 0 :(得分:6)

这相当于:

pSpiTxBuf[0] = CC2520_INS_SFLUSHRX; // get rid of this packet
pSpiTxBuf[1] = CC2520_INS_SFLUSHRX; // double flush [CC2520 Bug#1]

(这可能是一个更清晰的方式来编写代码)。

即。它只是将两个相邻的寄存器值设置为CC2520_INS_SFLUSHRX。

答案 1 :(得分:2)

递增和递减运算符在取消引用之前更改指针中的地址。 所以你在缓冲区中前进,然后改变新指向的单元格中的值。

答案 2 :(得分:2)

放入一些括号以使其更清晰:

*(pSpiTxBuf++) = CC2520_INS_SFLUSHRX;

忽略++,它是标准指针deference和*p = q形式的赋值。但是p碰巧有一个后增量运算符,这意味着,正常使用该值,但在使用它之后,增加它。

第一个是将值CC2520_INS_SFLUSHRX分配给*pSpiTxBuf,即pSpiTxBuf指向指向的位置。然后递增pSpiTxBuf,使其现在指向下一个位置。

第二个是类似的,但之后递减指针,所以它现在指向前一个位置。