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