конст и указатели в C
Использование const с указателем может сделать pointee неизменяемым, разыменовав его с помощью указанного указателя. Но почему ни я не могу изменить то, на что прямо указывает указатель?
Например:
int a = 3;
const int* ptr = &a;
*ptr = 5;
не будет компилироваться. Но почему
*(ptr + 2) = 5;
тоже не компилируется? Я не меняю то, на что указывает указатель.
Итак, нужно ли говорить, что использование const с указателем таким образом не только не изменяет то, на что указывает указатель (путем разыменования указателя), но и все остальное, на что адрес, который мы получаем с помощью указателя?
Я знаю, что в примере я пытаюсь получить доступ к нераспределенной памяти, но это только для обсуждения.