无法更新参数i& Ĵ

时间:2016-10-22 10:15:57

标签: c++ pass-by-reference

#include <iostream>
using namespace std;

int rev(int& sourcenum)
{
    int temp = sourcenum;
    int sum = 0;
    while (temp!=0)
    {
        sum*=10;
        sum += temp%10;
        temp/=10;
    }
    return sum;
};

int main() {
    int i,j;

    cin >> i >> j;

    int add = rev(i)+rev(j);
    cout<<i<<" "<<j<<endl;

    cout<<add<<endl;
    cout<<rev(add);

}

在此代码中,我无法更改参数i&amp; j。我不知道为什么。

1 个答案:

答案 0 :(得分:3)

rev(...)函数的第一行,您正在执行int temp = sourcenum;。此语句正在复制变量sourcenum中的值,您有意通过引用正确传递该值。 问题是,temp现在是 new 独立变量,只是使用您通过引用传递的变量sourcenum的值进行初始化。因此,如果您立即更改temp,则不会影响sourcenum

作为最小更改建议:如果您将int temp = sourcenum;更改为int& temp = sourcenum;,您应该获得按预期更改传递的引用的结果。