2017-07-07 16 views

回答

5

在該表達式中,buf + 1,其中buf是一個數組的buf+3 =地址;

  • buf隱式轉換爲等於&buf[0](的buf第一元件的地址)這是已知的(意料之中)標準轉換爲「數組指針轉換」,或爲「衰減到一個指針指針」。
  • 向指針添加整數值是正常指針算術運算,因此buf+1的結果等於&buf[1]

在您的代碼中,將指針添加到指針所產生的指針傳遞給該函數。你的代碼的更明確的版本將是

u8 buf[6]; 
Host2SCS(&buf[0], &buf[1], Position); 
Host2SCS(&buf[2], &buf[3], Time); 
Host2SCS(&buf[4], &buf[5], Speed); 

哪種形式是「更好」是一種風格的關注 - 他們在技術上是等價的。

-2

buf是一個指針(指向一個數組),在這種情況下,+運算符做指針運算。例如:A的

int A[] = {5, 1, 4, 8}; 
std::cout << A << std::endl; 
std::cout << A+3 << std::endl; 

output: 
0x7d972ee131c0 
0x7d972ee131cc 

A+3這樣=地址+ 3 * sizeof (int)

同樣,BUF + 3 * sizeof (u8)