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

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

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

Войти через центр авторизации
Похожие вопросы