0

ユーザーが変数valueに整数を入力できるようにし、2 つの代替関数を呼び出すプログラムを作成しています。それぞれの関数は、選択した整数値を 3 倍にします。この関数triple_by_valueは変数番号を値で渡し、パラメーターを 3 倍にして結果を返します。

この関数triple_by_referenceは、参照によって変数 number を渡し、参照パラメーターを介して number の元の値を 3 倍にします。

#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が値を3倍にせず、そのまま印刷するという問題があるようです。

どんな助けでも大歓迎です。

4

1 に答える 1

3

名前が示すように、変数を値で渡すということは、関数が変数の値のみを取得し、変数自体にはアクセスしないことを意味します。

あなたの例では、 inint valueとはまったく異なる変数ですが、同じ値を持っているだけです。ただし、はinへの参照です。つまり、それ自体を inと考えても安全です。valuemainint &valuevaluemainvaluemain

後で印刷valueすると、必要な値が得られます。に新しい値を持たせたい場合は、 inを実行するか、単に を使用して、新しい値をin に割り当てることができます。triple_by_valuevalue *= 3valuemainvaluemainvalue = triple_by_value(value);maintriple_by_reference

于 2014-12-19T13:34:59.090 に答える