#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
。我不知道为什么。
答案 0 :(得分:3)
在rev(...)
函数的第一行,您正在执行int temp = sourcenum;
。此语句正在复制变量sourcenum
中的值,您有意通过引用正确传递该值。
问题是,temp
现在是 new 独立变量,只是使用您通过引用传递的变量sourcenum
的值进行初始化。因此,如果您立即更改temp
,则不会影响sourcenum
。
作为最小更改建议:如果您将int temp = sourcenum;
更改为int& temp = sourcenum;
,您应该获得按预期更改传递的引用的结果。