【问题标题】:C++ - What's the difference between assigning a variable to another variable and assigning a variable to a reference variable?C ++ - 将变量分配给另一个变量和将变量分配给引用变量之间有什么区别?
【发布时间】:2019-01-08 02:54:39
【问题描述】:

说我有:

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

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

【问题讨论】:

  • 这是引用变量的初始化,而不是赋值。假设你有一些分号。

标签: c++ variables reference


【解决方案1】:

区别在于:

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

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

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

【讨论】:

    【解决方案2】:

    这是三者之间的区别。当您将 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多