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或sourcenumwhysourcenum
是通过引用传递的吗?它不会被修改。如果使用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);
}