Что в C ++ означает добавление числа в буфер (то есть buffer + 3)? - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь переписать некоторый код из C, и я наткнулся на шаблон, который я не понимаю.

uint8_t buffer[20];

...

uint8_t *ps = buffer+3

Что означает +3?

Я предполагаю, что это первые три байта буферизованного массива, но я не уверен, и я не могу найти объяснение.

1 Ответ

0 голосов
/ 17 марта 2020

В C ++ массивы являются указателями, а оператор индексирования (квадратные скобки) позволяет вам получить доступ к элементу в этой позиции: что действительно происходит, когда вы обращаетесь к элементу N с помощью buffer[N], это *(buffer + N) и * в начале означает извлечь значение из этого адреса памяти. Так uint8_t *ps = buffer+3 сохраняет адрес элемента буфера в позиции 3 . Для доступа к значению вам просто нужно набрать * ps, и вы получите значение элемента.

...