Ссылки не являются объектами; они не обязательно занимают хранение, хотя компилятор может выделять хранилище, если необходимо реализовать желаемую семантику (например, нестатический элемент данных ссылочный тип обычно увеличивает размер класса на величину необходимо сохранить адрес памяти)
Ответ 3
С точки зрения языка С++ он не определен.
На практике компиляторы обычно обрабатывают ссылки абсолютно так же, как указатели, хотя в С++ они имеют много разных свойств. Это означает, что адрес ссылочной переменной физически сохраняется. Возможно, единственным предположением, которое может сделать компилятор, является то, что ссылка не является нулевой. Несмотря на это, я думаю, что вы не можете получить доступ к адресу, хранящемуся в ссылочной переменной, в коде С++, не указав сначала указатель.
Обратите внимание, что компилятор часто может оптимизировать ссылочную переменную, чтобы вы даже не могли сказать, где она находится в сборке. И он может сделать то же самое с переменными указателя.