2013年9月8日日曜日

C++ 引数を参照にする 其の壱

関数の引数も参照で宣言できます。
Cでは引数をアドレスで渡せましたが、C++では参照で同様のことが実現できます。

では、関数の引数に参照を使う例を紹介します。

//関数定義
double AddNumber(double &x, double &y)  //引数を参照で宣言しています
{
    return x * y;    //*(アスタリスク)がついていないことがポイントです
}

//実際の呼び出し例
double number1 = 3.141592, number2 = 1.2345;
double answer = AddNumber(number1, number2); //&がついていないことがポイント

ここでは、もし x と y の値を変更すると number1, number2 の値も変わることを
押さえてください。

それでは、参照の機能を使って引数を渡すとアドレスで引数を渡した時と
同じことができます、というサンプルプログラムです。

#include <iostream>

using namespace std;

void ValueChanger(double &x);  //参照の関数のプロトタイプ

int main(void)
{
    double number1 = 10;

    cout << "number1 = " << number1 << endl;

    ValueChanger(number1);  //ValueChanger関数の呼び出し

    cout << "number1 = " << number1  << endl;

    return 0;
}

void ValueChanger(double &x)
{
    x = 500;
}

実行結果
# ./test
number1 = 10
number1 = 500

解説
main関数の中の変数number1は最初10で初期化しています。
ValueChanger関数をコールすると、値が500に変わっていますね。(^^)
これはValueChanger関数の中で引数 x に500を代入したためです。


今日の名言
男女を問わず物事に集中できる人間は、自分と接触する人間を惹きつけてやまない。
まるで磁石である。
                                 H・アディングトン・ブルース

うんと熱中せよ。熱中が熱中を生む。
                                 ラッセル・H・コンウェル

私は口角泡を飛ばして熱弁を振るう人間が好きだ。泥のぬかるみになるより、
間欠泉になって熱湯を吹き上げるほうが良い。
                                 ジョン・G・シェッド

私が心ゆくまで作曲したり、文章を書いたり、お祈りしたり、説教したりするときは、
怒りを込めてやる必要がある。その時、私の血液は沸き立ち、私の理解力は
研ぎ澄まされるのだ。
                                 マルティン・ルター

彼は思う存分にそれを行い、富み栄えた。
                                 旧約聖書「歴代志上」

美徳は自信を生み、自信は熱中を生む。そして熱中は世界を征服する。
                                 ウォルター・H・コッティンガム