Я относительно новичок в C ++, и я искал ответ на свой вопрос, однако я запутался. Как я понимаю, строковые литералы должны указываться указателями «const», поскольку считаются доступными только для чтения. Я также понимаю, что сам указатель не является константой (и может быть изменен), но на самом деле он указывает на строковую константу. Я также понимаю, что сама строка не может быть изменена. Так в этом примере:
const char* cstr="string";
*cstr = 'a';
Я получаю сообщение об ошибке: «назначение места только для чтения». Теперь, если я определю свою C -строку следующим образом и определю указатель на нее, я смогу изменить строку:
char str[7]="string";
char* cstr = str;
*cstr = 'a';
cout << cstr <<endl;
строка будет изменена (output -> а), означает, что первый элемент строки является изменения. Мои два вопроса: 1- почему во втором примере я могу изменить строку C, но в первом случае я не могу внести какие-либо изменения в строку? 2- В обоих случаях я использую указатели, но в первом случае я должен использовать постоянный указатель на символ?