按引用调用和按值调用

时间:2014-12-19 13:31:47

标签: c++ function pass-by-reference call-by-value

我正在编写一个程序,允许用户在变量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函数不是这样,嗯,三倍的值,只是按原样打印。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

顾名思义,按值传递变量意味着该函数只获取变量的值而不能访问变量本身。

在您的示例中,int valuevalue中的main完全不同,只是它具有相同的值。但是,int &value是对valuemain的引用,这意味着可以将其视为value本身的main

如果您在value之后triple_by_value打印value *= 3,您将获得所需的值。如果您希望value中的main拥有新值,则可以通过value中的main将新值分配到value = triple_by_value(value);中的main },或者只使用triple_by_reference