我正在编写一个程序,允许用户在变量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
不是,好吧,将值增加三倍,只是按原样打印。
任何帮助将不胜感激。
顾名思义,按值传递变量意味着函数仅获取变量的值,而无法访问变量本身。
在您的示例中,int value
是一个与 main
中的value
完全不同的变量,只是它具有相同的值。然而,int &value
是main
中对value
的引用,这意味着可以安全地将其视为main
本身的value
。
如果在value *= 3
后以triple_by_value
打印value
,您将获得所需的值。如果您希望main
中的value
具有新值,则可以通过在main
中执行value = triple_by_value(value);
来将新值分配给main
中的value
,或者简单地使用triple_by_reference
。