Допустим есть некий char ch[]
Это адрес.
А адрес это указатель-константа.
В книге так говориться.
Как это понимать?
C/C++
Что значит указатель константа на C++?
В контексте C++ термин "указатель-константа" может означать разные вещи в зависимости от контекста, в котором он используется. Однако, в большинстве случаев, это означает, что указатель либо указывает на неизменяемое значение, либо сам является неизменяемым.
Рассмотрим некоторые варианты:
Константный указатель на не-константные данные:
Не-константный указатель на константные данные:
Константный указатель на константные данные:
В контексте массива char ch[], ch на самом деле является указателем на первый элемент массива. Однако, в отличие от обычных указателей, этот "указатель" неизменяем (константный), и вы не можете изменить его так, чтобы он указывал на другую область памяти. Это как раз может быть описано как "указатель-константа" в некоторых книгах и учебных материалах.
Рассмотрим некоторые варианты:
Константный указатель на не-константные данные:
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 на самом деле является указателем на первый элемент массива. Однако, в отличие от обычных указателей, этот "указатель" неизменяем (константный), и вы не можете изменить его так, чтобы он указывал на другую область памяти. Это как раз может быть описано как "указатель-константа" в некоторых книгах и учебных материалах.
Некий char abc[x] - это не адрес, это переменная abc состоящая из х чаров. Считай структура.
Адресом она становится если взять с нее адрес случайно (например в функции написав в параметре char a[x]) или умышленно char* str = abc (и чисто случайно оказывается, что это якобы массив, хотя по факту это адрес первого чара)
А константы тут никакой нет.
Адресом она становится если взять с нее адрес случайно (например в функции написав в параметре char a[x]) или умышленно char* str = abc (и чисто случайно оказывается, что это якобы массив, хотя по факту это адрес первого чара)
А константы тут никакой нет.
Похожие вопросы
- Передача в метод класса указателя на функцию C++
- Проблема с указателем в C++
- C/C++ Как устроена память, выделенная для структуры с указателем *next?
- Не совсем понял как работает C++ код с указателями
- Читаю книжку по C, помогите с указателями
- Распечатать слова данного текста в обратном порядке c++ Надо переделать с помощью указателей
- Различие указателей int *; и char *;
- Если указатель уже объявлен как указатель то при повторном объявлении мы обращаемся не к указателю а к адресу ссылки?
- Объясните мне разное поведение sizeof для статической константы и динамического массива. C.
- Я не представляю, как можно в 21-ом веке писать на C++, в котором нет сборщика мусора и есть такой геммор, как указатели