Ключевое слово const обозначает, что та или иная величина не изменяется. Здесь приводятся подробные правила употребления описателя const.
1. Если в начале описания переменной стоит описатель const, то описываемый объект во время выполнения программы не изменяется:
const double pi = 3.1415;
const Complex one(1,1);
2. Если const стоит перед определением указателя или ссылки, то это означает, что не изменяется объект, на который данный указатель или ссылка указывает:
const char* ptr = &string; //указатель на неизменяемую строку
char x = *ptr; // обращение по указателю — допустимо
ptr++; // изменение указателя — допустимо
*ptr = '0'; // попытка изменения объекта, на который указатель указывает – ошибка
3. Если нужно объявить указатель, значение которого не изменяется, то такое объявление выглядит следующим образом:
char* const ptr = &string; //неизменяемый указатель
char x = *ptr; // обращение по указателю – допустимо
ptr++; // изменение указателя – ошибка
*ptr = '0'; // изменение объекта, на который указатель указывает – допустимо
[Ссылки]
1. Определения "char const *" и "const char *" - в чем разница? 2. Ключевое слово const в языке C++. |
Комментарии
const mystr str;
как раскрыть const mystr str;
a) const char* str;
b) char* const str;
//Липман и компилятор утверждают b вариант. Почему - не сильно
понятно. Из подстановки следует вариант а.
microsin: вообще-то ставить const перед типом на языке C неправильно (это бессмысленное использование ключевого слова), хотя компилятор ругаться не будет. Т. е. оба варианта, и а), и b) скомпилируются без замечаний и будут означать абсолютно одно и то же, а именно вариант b). Вариант b) будет правильным, потому что const стоит сразу перед именем переменной и относится к ней. Подробнее см. статью "«char const *» и «const char *» — в чем разница".
RSS лента комментариев этой записи