int x = 10;
int * const p = &x;
const int **p1 = &p;
Возникли проблемы с пониманием того, почему это незаконно.
РЕДАКТИРОВАТЬ
Спасибо за все великолепные ответы.Вот моя интерпретация ответов, не стесняйтесь не соглашаться.Итак, ошибка в 3-й строке.Это подразумевает, что исходное целое число является константой, но не подразумевает, что указатель, на который он указывает, является константой, и поэтому это недопустимо, потому что мы можем попытаться изменить указатель с «p» на «p1», что невозможно, поскольку это указатель с константой.Таким образом, чтобы исправить это, третья строка должна быть:
int * const *p1 = &p;
Это работает, потому что говорит, что, хотя исходное целое число не является константным (изменяемым), указатель, на который он указывает, является константой, и, следовательно, является допустимым утверждением.,Так что это также допустимо:
const int * const *p1 = &p;
Это говорит то же самое, но также говорит о том, что вы не можете изменить исходное целое число, потому что оно постоянное.