有人可以向我解释一下为什么调用这个函数后a会变成2而不是3或4吗?

问题描述 投票:0回答:1
#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。

c++ function void
1个回答
0
投票

您可以使用对同一对象的多个引用来更改它。例如

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

© www.soinside.com 2019 - 2024. All rights reserved.