p будет указывать на область памяти, доступную только для чтения, которая будет выделена в стеке.
Более того, компилятор автоматически завершит строку нулем, добавив в конце байт '\ 0'.
Использование const опасно, фактически компилятор g ++ выдает предупреждение для следующего кода:
#include <stdio.h>
int main(int argc, const char *argv[])
{
char *p = "AString8";
printf("%s\n", p);
printf("Last char: %c hex: %x\n", p[7], p[7]);
printf("Last char + 1: %c hex: %x\n", p[8], p[8]);
return 0;
}
предупреждение: устаревшее преобразование из строковой константы в 'char * ’
Вывод программы:
Last char: 8 hex: 38
Last char + 1: hex: 0