Суть в том, что программисты вынуждены объявлять некоторые указатели как минимум const char *
для хранения массивов символов между двойными кавычками.Ничто не заставляет их (без предупреждения или ошибки компилятора) также сделать указатель постоянным ... поскольку люди ленивы, вы можете сделать свой собственный вывод.Вероятно, они даже не пытаются определить константу, они просто хотят отключить ошибки компилятора (ну, в данном случае, предупреждение).
Имея это в виду, я, возможно, все равно выберу другое решение:
const char myConst[] = "Hello";
Разница здесь в том, что таким образом я не буду разлагать исходный байтовый массив, используемый в качестве строки для указателя, у меня все равно будет байтовый массив, который можно использовать точно в качестве исходного литерала.
С его помощью я могу делать что-то вроде sizeof(myConst)
и получать тот же результат, что и с sizeof("Hello")
.Если я изменю строку на указатель, то sizeof вернет размер указателя, а не размер строки ...
... и, очевидно, что при таком подходе изменение указателя становится бессмысленным, так какбольше нет указателей для изменения.