Почему выводится 20 20 20
ref1 - это ссылка на num1 , поэтому при назначении ref1 с num2 фактически вы назначаете num1 на num2 , такова цель ссылок
, так что это похоже на то, что вы делаете
int * ref1 = &num1;
*ref1 = num2;
как узнать их значения / адреса памяти
ref1 на правой стороне (случай в printf ) дает значение num1 , чтобы иметь адрес ссылочного элемента, а не его значение, как обычно, используя & , поэтому & ref1 values & num1 . Обратите внимание, что вы не можете переназначить ссылку, вы можете только инициализировать их