Сhar *dictionary[][] = {}; Зачем тут const?

У меня Microsoft visual studio 2017 не компилирует Сhar *dictionary[][] = {};
Говорит нужен const перед записью.
1. С каким стандартом появилась эта необходимость?
2. В чем вообще разница с const и без него?
  • Вопрос задан
  • 287 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Итак. Да, строковый литерал — это const char[], преобразуемое в const char*.
• Си++03 разрешал (но не одобрял).
• Си++11 запрещает.
• Одинаковые строковые литералы компилятор может преобразовать в один адрес, а также хранить в памяти, куда писать нельзя — потому const. И в Си без крестов тоже, только там попытка записи даст простой AV.
• Const — это т.н. «cv-модификатор» (const-volatile), входит в систему типов Си++, устанавливается свободно, снимается операцией const_cast и означает, что объект нельзя изменять.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час