c ++混淆中的引用

时间:2013-12-24 07:10:06

标签: c++ reference

#include <iostream>
using namespace std;

int main()
{
    int i=9,k=8;

    int &q=i;

    q=k;

    cout<<i<<"\n"<<q<<"\n";

    return 0;
}

输出:

8
8

但在我的书中给出“q = k仅改变i的值而不改变q。这是因为作为参考的q被自动解除引用为(* q)。因此存储在地址中的值q被i的值替换 但正如你所看到的,q的价值也会发生变化。是不是错了???

4 个答案:

答案 0 :(得分:2)

作为参考,

q不会改变。换句话说,它永远和永远地引用i始终(直到它超出范围)。您无法使q引用其他对象。这就是“它的价值[原文如此?]从未改变的意思”。 q的“值”是i的地址。当您分配到q时,您实际上已分配给i

您打印的内容是i的值,然后是q引用的对象的值(i)。

答案 1 :(得分:0)

由于qi的引用,这意味着它只是i的别名(i的其他名称)。

因此,i具有相同q的任何值都将具有!

答案 2 :(得分:0)

初始化参考时如下

int i = 9;

int &q =i;

q只是becom的另一个别名(你可以说是昵称),所以如果q发生任何变化,它也会反映在i中,反之亦然。

答案 3 :(得分:0)

初始化变量时:

int&amp; q = i;

每当你改变我,你就会改变q而反之亦然。

q的引用具有相同的i值,因此主题指向相同的内存位置。