В чем различия между строковым литералом и константным строковым литералом - PullRequest
1 голос
/ 25 апреля 2020

В чем разница между двумя определениями ниже:

    char *str1 = "string 1"; // (1)
    const char *str2 = "string 2"; // (2)

(1), это неопределенное поведение для строкового литерала?

Если нет, какое определение мы должны использовать (может вы приведете несколько примеров)?

1 Ответ

1 голос
/ 25 апреля 2020

Если вам нужна изменяемая строка, вы должны использовать следующее

char str1[]="string 1";

В C ++ вы не можете преобразовать строковый литерал в неконстантный, в C вы можете, но эта практика не рекомендуется.

Обновление.

В C ++ вы можете сделать следующее

char *str1 = (char *)"string 1" ; // (1)

Но вы не должны использовать этот указатель для изменения значения строки.

...