Справочное руководство по C++

R.8.2.1 Указатели.

В описании T D, в котором D имеет вид.

* список-спецификаций-cv opt D1.

Тип описываемого идентификатора есть.

"… список-спецификаций-cv указатель на T". Конструкция список-спецификаций-cv относится к указателю, а не к указуемому объекту.

Например, в описаниях.

Const ci = 10, *pc = &ci, *const cpc = pc;

Int i *p, *const cp = &i;

Определяются: ci как константа целое; pc как указатель на константу целое; cpc как константа указатель на константу целое; i как целое; p как указатель на целое; и cp как константа указатель на целое. После инициализации значения ci, cpc и cp не могут быть изменены. Значение pc можно изменять так же, как и значение объекта, на который указывает cp. Приведем примеры допустимых операций:

I = ci;

*cp = ci;

Pc++;

Pc = cpc;

Pc = p;

Недопустимы следующие операции:

Ci = 1; // ошибка.

Ci++; // ошибка.

*pc = 2; // ошибка.

Cp = &ci; // ошибка.

Cpc++; // ошибка.

P = pc; // ошибка.

Каждая из этих операций недопустима или потому, что она изменяет значение объекта, описанного со спецификацией const, или потому, что делает такое изменение возможным позднее с помощью указателя, настроенного на объект без спецификации const.

Аналогична ситуация со спецификацией volatile.

Обратитесь к §R.5.17 и §R.8.4.

Нельзя описывать указатели на ссылки (§R.8.2.2) или указатели на битовые поля (§R.9.6).