Почему увеличение указателя на массив дает такой результат?

Если я определяю новый массив (int) и увеличиваю разыменованный указатель на этот массив на 1, почему я получаю следующий результат?

int main()
{
    
    int myArray[1024];

    myArray[0] = 123;
    myArray[1] = 456;

    printf("%d \n", *myArray);
    printf("%d \n", *myArray+1);

    return 0;
}

Результат:

123 
124

Почему следующее значение не 456? И почему вывод пропускает 3?

Я понятия не имею, что вы подразумеваете под «почему вывод пропускает 3?» Что 3?

ShadowRanger 15.07.2024 00:26

Вы ничего не увеличиваете. Увеличение будет означать, что вы меняете значение переменной, чего вы не делаете. Вы добавляете только 1 к некоторому значению, не изменяя это значение.

Gerhardh 15.07.2024 09:30
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
3
2
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Приоритет операторов. * связывается более жестко, поэтому + 1 применяется к результату разыменования. *(myArray + 1) даст вам ожидаемый результат, 456. Как и более идиоматичное myArray[1].

Имеет смысл. ХОРОШО. Спасибо!

evstack 15.07.2024 00:27

Другие вопросы по теме