2009-09-08 61 views
1

我希望通過學習目的的一些代碼。我正在處理這部分代碼。什麼是添加一個在C做一個字符數組?

// e.g. const unsigned char data={0x1,0x7C ... } 
unsigned char buf[40]; 
memset(buf,0,40); 
buf[0] = 0x52; 
memcpy(buf+1, data, length); // What does buf+1 do in this situation? 

在調用memcpy的最後一行,buf + 1做了什麼? buf是一個字符數組,所以+1對它做了什麼?

回答

4

在C中,每個數組名稱是一個指針,所以這裏的buf也意味着指針,其指向的buf [0]。然後 「的buf + 1」 的意思「buf [1]」的地址。

+0

很酷。我有一種預感,這是它在做什麼,但語法沒有道理給我。感謝您爲我清理! – macinjosh 2009-09-08 01:54:58

+4

更準確的說,如果一個數組用在一個表達式裏,它不是'sizeof'或'&'運算符的主題,它就會計算出一個指向它的第一個元素的指針。 – caf 2009-09-08 01:56:40

3

buf+1&(buf[1])相同。換句話說,它返回一個指向第二(索引1)的buf的字符。

+1

只有29秒太慢:P – rpetrich 2009-09-08 01:53:13

相關問題