Программирование PC Использование описателя const в C Fri, August 18 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Использование описателя const в C Печать
Добавил(а) microsin   

Ключевое слово 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++.

 

Комментарии  

 
0 #1 LKote 31.08.2010 16:41
typedef char* mystr;
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 *» — в чем разница".
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page