C++ Can';t更新参数i&;J #包括 使用名称空间std; int rev(int&sourcenum) { int temp=sourcenum; 整数和=0; while(温度!=0) { 总和*=10; 总和+=温度%10; 温度/=10; } 回报金额; }; int main(){ int i,j; cin>>i>>j; int add=修订版(i)+修订版(j); cout

C++ Can';t更新参数i&;J #包括 使用名称空间std; int rev(int&sourcenum) { int temp=sourcenum; 整数和=0; while(温度!=0) { 总和*=10; 总和+=温度%10; 温度/=10; } 回报金额; }; int main(){ int i,j; cin>>i>>j; int add=修订版(i)+修订版(j); cout,c++,pass-by-reference,C++,Pass By Reference,在rev(…)函数的第一行,您正在执行int temp=sourcenum;。此语句复制变量sourcenum的值,您有意通过引用正确传递该值。 问题是,temp现在是一个新的独立变量,只是用通过引用传递的变量sourcenum的值初始化。因此,如果现在更改temp,它不会影响sourcenum 作为一个最小的更改建议:如果您将int-temp=sourcenum;更改为int&temp=sourcenum;,您应该会得到按预期更改传递的引用的结果。我很困惑-您没有尝试在int rev(int&

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


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

我很困惑-您没有尝试在
int rev(int&sourcenum)中更新I、j或sourcenumwhy
sourcenum
是通过引用传递的吗?它不会被修改。如果使用
int rev(int sourcenum)更改它
您可以在调用级别用计算结果替换i。@MoonJune:您需要注意,您的程序流逻辑没有用我的注释更正。要修复
0
输出,您需要在(temp!=0)时调整您的条件
是另一回事,因为它将导致
0
输出。我不确定您想用这段代码归档什么,但至少在我的更改
I
j
之后会发生更改。因此,关于传递引用的问题已经解决。调试您的代码,看看如何更改
sourcenum
during执行以检查出现逻辑错误的位置。
#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);

}