Указатели константы и на константы
Указатели бывают константами (то есть значение указателя нельзя поменять в программе) и указателями на константы (то есть указатель, адресующий неизменный участок памяти). В общем случае определение константного указателя на константу имеет вид: type const * const имя указателя; в этом определении type const – тип константы, на которую "указывает" указатель. А в последующей части после разделителя '*' - const имя указателя определяется имя константного указателя. В этом случае нельзя изменить значения указателя и нельзя изменить значение участка памяти, на который "указывает" указатель. Определение константного указателя имеет вид:
type* const имя указателя;
Например, в определении: char * const K = (char *) 1047; K – это указатель, значение которого невозможно изменить. Возможно менять значения по адресу К,то есть допустимы операции: * К = '*' или cin >> *K; Определение указателя на константу имеет вид: type const * имя указателя; Например, после определений: сonst float A = 56,1 float B = 1.1; float const *рA = &A; не допустимыоперацииизменения значения * рA,но допустимо разорвать связь указателя рA с константой А, присвоив указателю адрес другой переменной: рA = &B; и тогда допустимы, например: * рA=0.1 или cin >> * рA; Еще раз отметим свойства операции взятия адреса - '&' столь важной для инициализации указателей. Операция '&' применима только к объектам, имеющим имена и размещенным в ОП.
2.3. Типы указателей и операции над ними Типы указателей могут быть стандартными – указатели на объекты основных типов и производными: указателями на массивы, указателями на указатели, указателями на функции, указателями на константы, на структуры, на объединения, на объекты классов и на данные, типов определенных пользователем с помощью спецификатора typedef.
|