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