#include <iostream>
using namespace std;
void f(int &x, int &y)
{
x = 1;
x = x + y;
}
int main()
{
int a = 3;
f(a, a);
cout<<a;
return 0;
}
我在某处发现了这个函数,问题是当 a 为 3 时,调用 f(a, a) 后 a 的值是多少。我认为它应该在 3 到 4 之间,但它以某种方式给出了 2,我不知道不明白。有人可以解释为什么会发生这种情况,以及这些功能如何开始工作吗?好像很令人困惑,因为看起来 a 在函数后面既是 3 又是 4。
您可以使用对同一对象的多个引用来更改它。例如
int a;
int &x = a;
int &y = a;
x = 1;
x = x + y;
因为引用 x 和 y 都指向同一个变量 a then 在此语句之后
x = 1;
a 等于 1。在下一个语句中
x = x + y;
其实你有
x = a + a;
结果 a 将等于
2
。