Разница в том, что const char *
- это указатель на const char
, а char * const
- это постоянный указатель на char
.
Во-первых, указанное значение не может быть изменено, но указатель может быть. Во-вторых, значение, на которое указывает указатель, может измениться, но указатель не может (аналогично ссылке).
Существует также
const char * const
, который является постоянным указателем на постоянный символ (поэтому ничего нельзя изменить).
Примечание:
Следующие две формы эквивалентны:
const char *
и
char const *
Точная причина этого описана в стандарте C ++, но важно помнить и избегать путаницы. Я знаю несколько стандартов кодирования, которые предпочитают:
char const
над
const char
(с указателем или без него), чтобы расположение элемента const
было таким же, как с указателем const
.