Я всегда использовал строковые константы в C как один из следующих
char *filename = "foo.txt";
const char *s = "bar"; /* preferably this or the next one */
const char * const s3 = "baz":
Но, прочитав это, теперь я задаюсь вопросом, должен ли я объявить свои строковые константы как
const char s4[] = "bux";
?
Обратите внимание, что связанный вопрос, предложенный в качестве дубликата, отличается, потому что этот вопрос конкретно касается константных строк. Я знаю, как разные типы и как они хранятся. Версия массива в этом вопросе не const
-qualified. Это был простой вопрос относительно того, должен ли я использовать константный массив для константных строк по сравнению с версией указателя, которую я использовал. Ответы здесь ответили на мой вопрос, когда два дня поиска по SO и Google не дали точного ответа. Благодаря этим ответам я узнал, что компилятор может делать особые вещи, когда массив помечен как const
, и действительно есть (по крайней мере, один) случай, когда я теперь буду использовать версию массива.