Чтобы быть более строгим: строковые литералы имеют тип const char[]
.Однако const char[]
может быть неявно приведено к const char*
.Таким образом, вы можете легко получить указатель, назначив
const char* p = "string";
Обратите внимание, что если ваша следующая строка будет
const char* p1 = "string";
- значение p1
не обязательно будет равнок значению p
: разные строковые константы могут иметь разные адреса (но не обязательно).
Обратите внимание, что p
будет указателем на первый символ, а не на всю строку.
Еще одно предостережение: вам не следует пытаться получить указатель char*
(отбрасывая const
), поскольку это приведет к неопределенному поведению.Например, компилятор может поместить строковый литерал в постоянную память, и программа просто рухнет.