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