char* string = "Test";
Не делай этого. Это должно дать предупреждение, потому что это действительно статическая строка, но это не так. Если вы напишете строку, она взорвется.
const char* string = "Test";
Исправить.
char* const string = "Test";
Неправильно. Это означает, что указатель string
не может измениться, но его содержимое может, что не очень полезно, кроме неправильного.
const char* const string = "Test";
Исправить. Теперь ни указатель string
, ни его содержимое не могут измениться. Я редко беспокоюсь о const с правой стороны от *
, но у него есть свои возможности.
Если вы действительно хотите записываемая строку использовать
char string[] = "Test";
C99 - _6.4.5: Для символьных строк литералов, элементы массива ** имеют символьный тип **, и инициализируются с отдельными байтами многобайтовая последовательность символов; _ но с другой стороны: _ Если программа пытается изменить такой массив, поведение не определено. –