В C++, между чем различие char const *ptr=&ch;
и const char *ptr=&ch;
Они одинаковы, то есть указатель на const char
.
Однако char * const ptr
отличается, являясь константным указателем на (неконстантный) char
.
И чтобы завершить набор, const char * const ptr
является указателем const на const char
.
Const применяется ко всему, что находится непосредственно слева от него (кроме случаев, когда там ничего нет, и в этом случае оно применяется к тому, что находится непосредственно справа от него). Так что разницы нет.
char * const ptr
будет константным указателем на значение переменной.
char const *ptr=&ch;
и const char *ptr=&ch;
означают, что char является константным, а указатель - переменным (или может быть изменен).
Но в случае char * const ptr
, вы не можете переназначить указатель после того, как вы его установили. поэтому это постоянный указатель на строку char.
Другие ответы касались технического решения - ваши два примера одинаковы.
Многие люди предпочитают читать справа налево, когда имеют дело с const
в C ++. На английском языке нам нравится думать о константе X, в то время как C ++ любит анализировать константу X. Чтение справа налево дает более английский результат.
Довольно крайний пример:
C const * bar(A * const, B const * const) const;
Справа налево это читается как «Постоянная функция bar
, принимающая в качестве параметров постоянный указатель на A
и постоянный указатель на константа B
, возвращающая указатель на константу C
'. Обратите внимание, что все три типа указателей различны.
Никакой разницы в C ++.
Важно, чтобы const
было перед *
или после *
.