Как-то эти арифметические указатели меня очень смущают. Пример:Указатель Арифметика и литье
uint16_t *a = (uint16_t *)0x200;
a += 4 * sizeof(uint32_t);
При расчете нового значения, каков ваш мыслительный процесс?
Это, как я пытаюсь понять это:
- указатель (а) указывает на адрес, который имеет значение 0x200 типа uint16_t.
- Вторая операция перемещает указатель a на + 4 * 8 байтов в место 32 байта (20 в гексагоне) вверх, что, по-видимому, 0x220. Почему это не & a + 32? Я думаю, что это то, где я путаю вещи ... Почему указатель указывает на 0x200, а не & a?
Выберите между 'C++' и 'C'. Они разные, поэтому, пожалуйста, пометьте свой вопрос только одним из них. –
c или C++? Выберите один – Magisch
Я думал, что в этом случае это было действительно на обоих языках ... Наверное, я просто буду использовать C++. – Space