Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Указатели и константы.






Следует особо остановиться на указателях и квалификаторе (модификаторе) const. Как известно, квалификатор const превращает переменную в константу, значение которой не должно меняться. Например, нет смысла изменять число. Значение константы должно быть инициализировано в месте ее определения. В связи с этим различают указатели на константы и константные указатели. Приведем следующий пример:

long value = 9999L;

const long *pvalue = & value;

Последняя строчка приведенного кода определяет собой указатель на константу. Попытка указателю pvalue присвоить иное числовое значение будет восприниматься компилятором как ошибка. Но само значение переменной value изменять допустимо. При этом указатель держит адрес переменной, значение которой изменилось. В тоже время саму переменную также можно объявить с помощью квалификатора const. В этом случае нельзя изменять ни переменную, ни значение указателя (т. е. присвоить иное числовое значение указателю). Указатели на константы часто используются как формальные параметры функций (о функциях будет сказано позднее).

Константный указатель может адресовать как константу, так и переменную. В случае, когда определен константный указатель, то через него нельзя уже брать адрес другой переменной. Приведем следующий пример определения константного указателя:

int count = 43;

int *const pcount = & count;

Вторая строчка приведенного кода определяет и инициализирует константный указатель pcount, который " привязан" к адресу переменной count. Если определить новую переменную того же типа, то взять адрес новой переменной с помощью константного указателя pcount будет нельзя, компилятор сделает сообщение об ошибке и работа программы будет невозможной. В тоже время возможно изменить значение константного указателя через другое числовое значение. Но это повлечет за собой изменение переменной, на которую указатель ссылается. Например,

int count = 43;

int *const pcount = & count;

*pcount = 345;

В соответствии с приведенным кодом переменная count будет иметь значение 345.

Соответственно, если константный указатель ссылается на константный объект (например, на константную переменную), то в этом случае ни значение объекта, на который ссылается такой указатель, ни значение самого указателя (когда будет сделана попытка присвоить иное числовое значение указателю) не может быть изменено в программе. Например,

const int card = 21;

const int *const pcard = & card

Указанные особенности для указателей с квалификатором const присущи и для переменных (объектов) других типов.

Указатели, значения которых изменять нельзя используются, например, при заполнении константных таблиц.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.