Помогите разобраться поглубже чем по сути является именованная ячейка памяти (переменная). Не могу правильно сформулировать свой вопрос, но т.е понимаю, что при хранения данных в блоке памяти выделяется место, но не понимаю как хранится именованная ее часть. К примеру:
int a = 5;
По сути начало блока памяти для числа 5 является первый его адрес, к примеру 0х0000132 но чем является переменная а? Его неким псевдонимом? Или блок памяти имеет кроме хранения значения еще и метаинформацию для хранения того же а?
Не хочу показаться тупым, но не может быть что а является ссылочным типом на int, который смотрит в этом случае на стек первого адреса значения 5?
На самом деле, у переменной может не быть адреса вовсе.
Если переменная используется лишь на небольшом участке, компилятор может эту переменную затолкать в регистр процессора и держать её там в течение всего времени её жизни, не выделяя ей место в оперативной памяти вовсе.
Если в программе используется лишь изначальное значение неменяющейся переменной, компилятор волен вставить вместо чтения этой переменной само значение. В качестве непосредственного (immediate) значения, прямо в генерируемый программный код.
Если переменная вообще не оказывает никакого влияния на ход программы и не торчит наружу, компилятор может выкинуть с корнем её, все операции над ней и все её значения.
Переменная это уровень языка. Она абстрактна. У вас есть имя, тип и область видимости, определённые языком. Всё. А при сборке компилятор уже сам разберётся, как реализовать это, чтобы программа вела себя соответственно своему исходному коду. Чем меньше требований вы к переменной предъявляете, тем больше у компилятора свободы к самовыражению своей оптимизаторской сущности.
Однако, компиляторы обычно реализуют возможность сборки с отладочной информацией, нужной для осмотра состояния программы в любой момент с помощью отладчика. Там название переменной и её местонахождение указано. Но это удобство компилятора для разработки, а не особенность языка и, что интересно, включение этого удобства может изменить реализацию переменной (см. опцию /ZI в MSVC).
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости