宣言しましょう:
...
int a= 5;
int& b= a;
...
aとの違いがわかりませんb。私は、それは単なるアドレスだaと思います。bしかし、このアドレスは記憶のどこにあるのでしょうか? それでは、関数を定義しましょう。
int foo(int& x)
{
    return x;
}
...
foo(a);
foo(b);
fooが呼び出しているときに何が起こっていますか? つまり、値を返すときは、アドレス whos in aor b?で行っています。