Говоря о строковых литералах, в стандарте C99 говорится (6.4.5.6):
Не указано, являются ли эти массивы различными, если их элементы имеют соответствующие значения. Если программа пытается изменить такой массив, поведение undefined.
Я не мог найти ни похожего предупреждения, ни явной гарантии для константных переменных. Может ли выражение &x == &y
в контексте const int x=12; const int y=12;
оцениваться на 1
? Что относительно константной переменной и строкового литерала (т.е. &x == "\014\000\000"
гарантированно будет 0
даже на 32-битной платформе с маленькими терминами)?
Для чего это стоит, раздел "Строковые литералы" в этот пост в блоге дает контекст вопроса.