我正在编写一个程序,允许用户在变量value
中输入一个整数,并调用两个备用函数,每个函数对所选的整数值进行三倍处理。
函数triple_by_value
按值传递变量数,使参数增加三倍并返回结果。
函数triple_by_reference
通过引用传递变量数,并通过引用参数将数字的原始值增加三倍。
#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
函数不是这样,嗯,三倍的值,只是按原样打印。
非常感谢任何帮助。
答案 0 :(得分:3)
顾名思义,按值传递变量意味着该函数只获取变量的值而不能访问变量本身。
在您的示例中,int value
与value
中的main
完全不同,只是它具有相同的值。但是,int &value
是对value
中main
的引用,这意味着可以将其视为value
本身的main
。
如果您在value
之后triple_by_value
打印value *= 3
,您将获得所需的值。如果您希望value
中的main
拥有新值,则可以通过value
中的main
将新值分配到value = triple_by_value(value);
中的main
},或者只使用triple_by_reference
。