在C中为字符数组添加一个是什么?

我正在查看一些用于学习目的的代码。 我正在研究这部分代码。

// eg 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会对它做什么?

在C中,每个数组名都是一个指针,所以这里的buf也意味着指向buf [0]的指针。然后“buf + 1”表示“buf [1]”的地址。

buf+1相当于&(buf[1])

buf+1&(buf[1]) 。 换句话说,它返回指向buf的第二个(索引1)字符的指针。

指针算术(堆栈溢出)