【发布时间】: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;的作用相同。它不分配引用,它分配引用所指的事物。 -
无法重新分配引用意味着
&r永远不会改变。r可以在引用非常数的情况下更改。 -
“p 的内容”不正确。
p持有一个指针,但是输出没有显示指针的值;它显示指针指向的值。不要每个人都忘记了指针和它所指向的东西之间的区别。