C++ 为什么我得到这个输出。 (这里是新手)

C++ Why am I getting this output. (Greenhorn here)

所以在下面的代码中,我一直在试图弄清楚为什么代码的输出结果是...

X = 2 和 Y = 2

当我最初认为它会是 x = 1 和 y = 1 时。我仍然对 C++ 进入这个学期感到困惑,并且与知识比我更多的人进行一些解释,希望可以啮合这个概念进入我的脑海。

int main()
{

    int x = 0;

    int& y = x;

    y++;

    x++;

    std::cout << "x = " << x << " y = " << y << std::endl;
}

x 和 y 彼此没有区别。 Reference 表示 x 的另一个名称是 y。因此,当您调用 y 时,它会调用 x,这意味着如果您增加 y,它会增加 x。然后你再次增加 x,x 变成 2。因为 y 代表 x,当你调用 y 时,它调用 x,你又看到 2。

关键是参考符号的含义:

int& y = x;
  1. 代表你给'x'分配了一个别名,所以'y'实际上和'x'共享同一个内存地址(物理上)。

正在做

y++;

将更改内存地址中的值,该内存地址由 'x' && 'y' 共享。同操作

x++;

因此,您在初始值为“0”的同一内存地址上进行了 2 次递增,该值变为“2”。

  1. 相同的想法,因为 'x' 和 'y' 都指向完全相同的内存地址,打印 'x' 和 'y' 会给你相同的值。