C ++-将变量分配给另一个变量和将变量分配给参考变量有什么区别?

时间:2019-01-08 02:54:40

标签: c++ variables reference

说我有

int a = 1
int b = a
int& c = a

bc有什么区别? ba的单独副本吗?

2 个答案:

答案 0 :(得分:2)

区别是:

  1. b是值的副本->正确。 其中b有其自己的内存地址,在其中存储了其值b = a的值。 它只是一个变量的赋值。
  2. c不仅复制a的值,而且完全代表a。 所以在完成int&c = a;之后 现在我们有2个人,但名字相同。并且您可以完全控制其他名称的c。

令人惊讶的是,您可以使用以下代码进行检查

int main()
{
    int a =2;
    int b =a;
    int&c =a;
    int d = 3;
    c =d;
    cout <<"a="<<a<<" b="<<b<<" c="<<c<<endl;
}

将打印

a=3 b=2 c=3

答案 1 :(得分:0)

这是三者之间的区别。当您将b分配为等于a时,实际上就是在创建一个精简副本。但是,如果要修改a,则b将保持不变。例如,如果将a增大到2,然后打印结果,则a等于2,但b仍等于1。另一方面,由于将c初始化为对a的引用。

只要a更改其值,c也会更改其值。您也可以通过更改c的值来更改a的值。有关指针和引用的更多信息,请阅读本文http://www.cplusplus.com/doc/tutorial/pointers/

这里有一些示例代码

#include <iostream>

int main() {
    int a = 1;
    int b = a;
    int &c = a;

    std::cout << " a = " << a << ", b = " << b << ", and c = " << c << std::endl;
    a++;
    std::cout << " a = " << a << ", b = " << b << ", and c = " << c << std::endl;
}

输出:

a = 1, b = 1, and c = 1
(after increment) a = 2, b = 1, and c = 2