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

В C++, между чем различие char const *ptr=&ch; и const char *ptr=&ch;

11
задан shreyasva 30 April 2010 в 07:26
поделиться

5 ответов

Они одинаковы, то есть указатель на const char .

Однако char * const ptr отличается, являясь константным указателем на (неконстантный) char .

И чтобы завершить набор, const char * const ptr является указателем const на const char .

32
ответ дан 3 December 2019 в 01:04
поделиться

Const применяется ко всему, что находится непосредственно слева от него (кроме случаев, когда там ничего нет, и в этом случае оно применяется к тому, что находится непосредственно справа от него). Так что разницы нет.

char * const ptr будет константным указателем на значение переменной.

6
ответ дан 3 December 2019 в 01:04
поделиться

char const *ptr=&ch; и const char *ptr=&ch; означают, что char является константным, а указатель - переменным (или может быть изменен).

Но в случае char * const ptr, вы не можете переназначить указатель после того, как вы его установили. поэтому это постоянный указатель на строку char.

0
ответ дан 3 December 2019 в 01:04
поделиться

Другие ответы касались технического решения - ваши два примера одинаковы.

Многие люди предпочитают читать справа налево, когда имеют дело с const в C ++. На английском языке нам нравится думать о константе X, в то время как C ++ любит анализировать константу X. Чтение справа налево дает более английский результат.

Довольно крайний пример:

C const * bar(A * const, B const * const) const;

Справа налево это читается как «Постоянная функция bar , принимающая в качестве параметров постоянный указатель на A и постоянный указатель на константа B , возвращающая указатель на константу C '. Обратите внимание, что все три типа указателей различны.

2
ответ дан 3 December 2019 в 01:04
поделиться

Никакой разницы в C ++.

Важно, чтобы const было перед * или после * .

7
ответ дан 3 December 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: