Как уже указывалось, возможно самый распространенный указатель const -
const char* p;
Переменная p может изменяться, но данные, на которые указывает p, неизменяемы.
Однако перемещение ключевого слова const слева от звездочки не меняет смысла объявления:
char const* p;
Я предпочитаю позже, так как становится намного легче запомнить, где размещать ключевые слова const при объявлении указателей const на указатели const:
char const* const* p;
Опять же, переменная p может измениться, и указанные данные не могут быть изменены. Кроме того, данные объявляются как константные указатели, что означает, что они указывают на данные, которые нельзя изменить.
Наиболее распространенная запись для этого типа -
const char* const* p;
Размещение ключевого слова const непосредственно слева от изменяемой звездочки (или амперсанда для справки) позволяет легко создавать сложные типы, включающие ключевое слово const. Например, указатель на константные указатели:
char const** p;
и константный указатель на указатели:
char* const* p;
Не забывайте «читать» объявления указателей справа налево и не объявляйте более одного указателя в каждом операторе, чтобы избежать путаницы.