Компилятором-линкером при создании exe-файла
В память эти значения по тем адресам, где они будут использоваться, подгружает ОС. А значения констант, лежащих на стеке, в память по месту использования подгружает пользовательский код.
Что означает? Строковые литералы объединили с константами?
Что стандарт ISO C использует другую терминологию.
Как это переменную нельзя использовать как константу?
Изначальная ветка:
Так "нужные значения, хранящиеся в бинарном образе программы" и есть константы.
Из тела программы вы не сможете обратиться к ним как к обычным константам
С учетом дальнейшего обсуждения я бы это перевел как
const object и отличаются от
литералов - и это правда (например константные объекты можно использовать в нескольких разных выражениях, литералы нет).
Символьные константы, целые константы, константы с плавающей точкой,… — это константы. Строковые литералы — это не константы (отдельная группа).
Стандарта С под рукой нет, в стандарте C++ вообще нет понятия "константа", есть "константное выражение" (и константный объект).
Строковые литералы - это lvalue, остальные - prvalue.