Объявление указателей в С++

В С++ какая разница между 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.