В чем заключается ошибка в строке str2[0] = str2[6]? (Заранее спасибо) [дубликат]

180
21 ноября 2017, 23:59

На данный вопрос уже ответили:

  • C++: изменение символа строкового литерала 3 ответа
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    char str[8] = { '0','1','2','3','4','5','6','\0'};
    str[0] = str[6];
    cout << str << endl;
    char *str2 = "0123456";
    str2[0] = str2[6];
    cout << str2 << endl;
    return 0;
}
Answer 1

Строковый литерал в C++ имеет тип const char *, и менять его нельзя.

Такое присваивание может завалить программу, может просто молча не выполниться, может, правда, и выполниться :)

Словом, объявляйте, если хотите менять, хотя бы так:

char str2[] = "0123456";
READ ALSO
WinAPI C++ GDI черный экран через некоторое время работы

WinAPI C++ GDI черный экран через некоторое время работы

Программа работает некоторое время корректно, но потом без видимых причин просто превращает кадр в черный квадратГрешил на переполнение...

230
Рисуем свою кнопку

Рисуем свою кнопку

Рисую свою кнопку так:

207
Помогите понять условие задания

Помогите понять условие задания

Создать иерархию классов представляющих простое наследованиеБазовый класс – строка символов (char *)

224
Проектирование контакт листа Qt

Проектирование контакт листа Qt

Нужно написать контакт лист для мессенджераДля этого пытаюсь правильно все спроектировать для удобной работы и простого расширения

232