Вот в этой книге:
http://www.plam.ru/compinet/yeffektivnoe_ispolzovanie_c_55_vernyh_sposobov_ul...
есть следующая фраза (речь идет о модификаторе const и объявлении указателя):
Если слово const появляется слева от звездочки, константным является то, на что указывает указатель; если справа, то сам указатель является константным.
Вопрос: что скрывается под фразой «сам указатель является константным»?
С точки зрения машинного кода, указатель - это ячейка памяти, в которой хранится адрес значения, на которое указывает указатель. При обращении к указателю, компилятор по имени указателя вычисляет адрес ячейки памяти указателя, берет из нее адрес значения. И дальше использует этот адрес значения (обычно обращение происходит через инструкцию LEA).
«Сам указатель является константным» - это значит, что:
Вариант 1
... в ячейке памяти указателя может храниться только один адрес, заданный при инициализации. Соответственно, указатель может ссылаться только на одну-единственную ячейку памяти, адрес которой был задан при инициализации.
Вариант 2
... адрес ячейки указателя является константой. Компилятор всего лишь гарантирует, что адрес ячейки указателя не будет меняться в течении времени жизни указателя. Так как это и так очевидно, то особого смысла в конструкции «сам указатель является константным» нет, хотя и поддерживается языком.
Какой вариант правильный? Или правильным будет какой-то третий вариант?