2009-09-08 8 views
1

Я просматриваю код для учебных целей. Я работаю над этой частью кода.Что добавляет один в массив символов в C Do?

// 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 [0] .Затем "BUF + 1" означает, "buf [1]".

+0

Ах круто. У меня была догадка, что это было, но синтаксис имел смысл для меня. Спасибо, что освободил меня! – macinjosh

+4

Вернее, если массив используется в выражении, где он не является объектом оператора 'sizeof' или' & ', он вычисляет указатель на его первый элемент. – caf

3

buf+1 такое же, как &(buf[1]). Другими словами, он возвращает указатель на второй (индекс 1) символ buf.

+1

Только 29 секунд слишком медленно: P – rpetrich