【问题标题】:What is the difference between int &r=x and r=y in C++? [duplicate]C++ 中的 int &r=x 和 r=y 有什么区别? [复制]
【发布时间】:2015-01-19 02:12:40
【问题描述】:
#import<iostream>
using namespace std;
int main()
{
    //trying to test pointers & reference
    int x = 5;
    int y = 6;
    int *p;
    p = &y;
    *p = 10;
    int &r = x;
    cout<<"X reference\n"<<&r<<"\n"<<"value:"<<r<<"\n";
    r=y;
    cout<<"Y reference\n"<<&r<<"\n"<<"value:"<<r<<"\n";
}

在这段代码中,我首先将 &r 分配给 x,然后将 r 分配给 y。

  1. 分配 & r=x 和 r=y 有什么区别? 请帮帮我。

【问题讨论】:

  • 您无法重新设置参考。这就是区别。为什么你的代码中有import
  • 尝试在程序结束时也打印出xy
  • r 是 x 的别名。 &amp;r = x 将引用初始化为 x 的别名。由于 r 现在是 x 的别名,r=yx=y 相同。

标签: c++ reference


【解决方案1】:

int&amp; r = x 声明对x 的引用,将其视为别名。因此,如果您进一步修改x,它将反映在r中,例如,

x = 10;
cout << r; // r is "updated" here, as it is a reference to `x`

将打印10

另一方面,int r = x 声明只是将x 的值复制到r,然后r 完全独立于x。所以修改x绝对不会对r产生影响。

从某种意义上说,引用是指针的“某种”语法糖,虽然并不完全相同,因为您不能有未初始化的引用。

【讨论】:

    【解决方案2】:

    int &amp;r = x;

    定义对 int 变量的引用。

    引用在定义后不能改变引用的内容,所以行

    r=y;

    正在分配x 存储在y 中的值。它不会使 r 开始引用 y。对r 的任何分配都将被视为来自x

    考虑引用的另一种方式是,它们好像是一个指针变量,在初始化后您无法更改指向的内容,并且任何出现的引用都有隐式取消引用 (*) 运算符。

    【讨论】:

      猜你喜欢
      • 2012-02-15
      • 1970-01-01
      • 2021-10-21
      • 2011-01-17
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多