Когда вы делаете ссылку, это почти как указатель, поэтому, когда вы можете изменить r, вы на самом деле изменили то, на что указывал r, что также i.
На самом деле, если быть более точным, ссылка не является указателем илиадрес, это это объект.По крайней мере, в мире C ++.