2009-09-08 28 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

相关问题