C/C++

Что значит указатель константа на C++?

Допустим есть некий char ch[]
Это адрес.
А адрес это указатель-константа.
В книге так говориться.
Как это понимать?
В контексте C++ термин "указатель-константа" может означать разные вещи в зависимости от контекста, в котором он используется. Однако, в большинстве случаев, это означает, что указатель либо указывает на неизменяемое значение, либо сам является неизменяемым.

Рассмотрим некоторые варианты:

Константный указатель на не-константные данные:

 int x = 10; 
int* const ptr = &x;
Здесь ptr — это константный указатель, который указывает на переменную x. Поскольку ptr константный, его нельзя изменить так, чтобы он указывал на другую переменную. Однако, значение, на которое он указывает (x), можно изменить.

Не-константный указатель на константные данные:

 const int x = 10; 
const int* ptr = &x;
Здесь ptr — это указатель на константное значение. Это значит, что через этот указатель нельзя изменить значение переменной, на которую он указывает (x). Однако сам указатель ptr можно изменить так, чтобы он указывал на другую переменную.

Константный указатель на константные данные:

 const int x = 10; 
const int* const ptr = &x;
Здесь ptr является константным указателем на константное значение. Это значит, что ни значение, на которое указывает ptr, ни сам указатель ptr нельзя изменить.

В контексте массива char ch[], ch на самом деле является указателем на первый элемент массива. Однако, в отличие от обычных указателей, этот "указатель" неизменяем (константный), и вы не можете изменить его так, чтобы он указывал на другую область памяти. Это как раз может быть описано как "указатель-константа" в некоторых книгах и учебных материалах.
Алексей Игнатьев
Алексей Игнатьев
3 288
Лучший ответ
Некий char abc[x] - это не адрес, это переменная abc состоящая из х чаров. Считай структура.
Адресом она становится если взять с нее адрес случайно (например в функции написав в параметре char a[x]) или умышленно char* str = abc (и чисто случайно оказывается, что это якобы массив, хотя по факту это адрес первого чара)
А константы тут никакой нет.