我正在编写一个程序,让用户将一个整数输入到变量 value
中,然后调用两个替代函数,每个函数将所选整数值乘以三倍。
triple_by_value
函数按值传递变量 number,将参数乘以三倍并返回结果。
函数triple_by_reference
通过引用传递变量number,并通过引用参数将number的原始值乘以三倍。
#include <iostream>
using namespace std;
int main()
{
cout << "Enter a number (-1 to end): ";
cin >> value;
if (value != -1)
{
triple_by_value(value);
cout << "Triple-By-Value: " << value << endl;
triple_by_reference(value);
cout << "Triple-By-Reference: " << value << endl;
}
return 0;
}
int triple_by_value(int value)
{
value *= 3;
return value;
}
int triple_by_reference(int &value)
{
value *= 3;
return value;
}
我似乎遇到了一个问题,函数 triple_by_value
不是,好吧,将值增加三倍,只是按原样打印。
如有任何帮助,我们将不胜感激。
最佳答案
顾名思义,按值传递变量意味着函数只获取变量的值而不访问变量本身。
在您的示例中,int value
是与 value
完全不同的变量在 main
,只是它具有相同的值。然而,int &value
是对 value
的引用在 main
,这意味着可以安全地将其视为 value
在 main
本身。
如果你打印 value
在 triple_by_value
在 value *= 3
之后你会得到你想要的值(value)。如果你想要value
在 main
要获得新值,您可以将新值分配给 value
在 main
通过做value = triple_by_value(value);
在 main
, 或者简单地使用 triple_by_reference
.
关于c++ - 按引用调用和按值调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27567192/