2012-11-21 64 views

回答

6

這相當於:

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

(這可能早就寫在首位的代碼更明確的方式)。

即它只是將兩個相鄰的寄存器值設置爲CC2520_INS_SFLUSHRX。

2

增量和減量運算符在取消引用之前更改指針中的地址。 因此你在緩衝區中前進,並且改變新指向的單元格中的值。

2

把一些括號中可以很清楚的:

*(pSpiTxBuf++) = CC2520_INS_SFLUSHRX; 

忽略++,這是一個標準的指針尊重和形式*p = q的分配。但p恰好有一個後增加的運算符,這意味着,使用這個值是正常的,但是在你使用它之後,增加它。

第一個是所述值分配到CC2520_INS_SFLUSHRX*pSpiTxBuf,即,指向pSpiTxBuf的位置。然後它增加pSpiTxBuf,以便它現在指向下一個位置。

第二個是類似的,但後來減少指針,所以它現在指向前一個位置。