【问题标题】:Reassigning C++ reference variables [duplicate]重新分配 C++ 引用变量 [重复]
【发布时间】:2016-02-09 20:56:10
【问题描述】:

我正在尝试理解 C++ 引用变量。该链接似乎表明可以重新分配指针,而应在初始化时分配引用。 difference between pointer and reference。我在下面有以下代码。我已经在 debian 系统上运行了它。输出也如下所示。输出似乎表明引用也可以重新分配。如果有人能澄清一下,那就太好了。

#include <iostream>
using namespace std;

int main()
{
  int x = 5;
  int y = 6;
  int *p; 

  p = &x; 
  cout << "content of p " << *p << endl;

  p = &y; 
  cout << "content of p " << *p << endl;

  *p = 10; 
  cout << "content of p " << *p << endl;

  /*A reference must be assigned at initialization*/
  int &r = x;
  cout << "content of r " << r << endl;

  r = y;
  cout << "content of r " << r << endl;


  return 0;
}

输出

content of p 5
content of p 6
content of p 10
content of r 5
content of r 10

【问题讨论】:

  • 无法重新分配引用。如果您认为可以,那么您的测试还不够彻底。
  • 这里的r = y;x = y; 的作用相同。它不分配引用,它分配引用所指的事物。
  • 无法重新分配引用意味着&amp;r 永远不会改变。 r 可以在引用非常数的情况下更改。
  • “p 的内容”不正确。 p 持有一个指针,但是输出没有显示指针的值;它显示指针指向的值。不要每个人都忘记了指针和它所指向的东西之间的区别。

标签: c++ pointers reference


【解决方案1】:

您在这里看到的是分配给引用变量所引用的变量的值。

换句话说:
您没有为 引用 变量分配新值。您为 referenced 变量分配了一个新值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2019-11-24
    • 2012-08-07
    • 2010-09-13
    相关资源
    最近更新 更多