C 为什么我要获得此输出.(这里的绿角)

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

本文关键字:这里 输出 我要 为什么      更新时间:2023-10-16

因此,在以下代码中,我一直在试图弄清楚代码的输出为何为...

x = 2,y = 2

当我最初认为它是x = 1且y = 1时进入我的头。

int main()
{
    int x = 0;
    int& y = x;
    y++;
    x++;
    std::cout << "x = " << x << " y = " << y << std::endl;
}

x和y与彼此没有什么不同。参考意味着x的另一个名称为y。因此,当您调用Y时,它将调用X,这意味着如果增加Y,则会增加x。然后,您再次增加x,然后x变为2。并且因为y代表x,当您调用y时,它调用x,然后再次看到2。

关键点是参考标志的含义:

int& y = x;
  1. 它代表您将别名分配给" x",因此" y"实际上共享与" x" do(物理上)相同的内存地址。

y++;

将更改该内存地址内部的值,这两者都由" x"&amp;&amp;共享。'Y'。与操作相同

x++;

结果,您在相同的内存地址上进行了2个增量,并具有" 0"的Intial值,该值将变为'2'。

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