複数の値を返す関数 (参照渡し)

複数の値を返す関数 解説・方法

本ページでは「複数の値を返す関数 (参照渡し)」について解説します。

通常、関数は 1つの値しか返すことができませんが、参照渡しを利用することで、複数の値を同時に返すことが可能になります。以下で、基本的な 1つの値を返す関数と、参照渡しを使った複数の値を返す関数について解説します。

1つの値を返す関数 (通常)

自身で作成した関数「my_function1」と「my_function2」を使って、2つの値の足し算と掛け算を計算します。

作成した 1つの関数で 1つの値しか計算して返せないので 2つの関数を作って計算した結果を返します。

コード

// 1つの値を返す作成関数
#property strict
void OnInit() {

int a = 3;
int b = 7;

int c = my_function1(a, b);     // 足し算の関数

int d = my_function2(a, b);     // 掛け算の関数

Print("結果:","a + b = ", c, " a x b = ", d);
}

int my_function1(int a, int b){ // 足し算の関数
   return(a + b);
}

int my_function2(int a, int b){ // 掛け算の関数
   return(a * b);
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

1つの値を返す関数の結果

 

2つ以上の値を返す関数

2つ以上の値を返す作成関数は void型です。

値を返すための変数の前に「& (ampersand [アンパサンド] )」を付けます。この関数により、この関数内でのデータを 2つ以上返すことができます。

これは「参照渡し」と言われ、関数の引数として変数そのものを渡す方法です。これにより、関数内でその引数の値を変更すると、その変更が関数の外にも反映されるようになります。

コード

// 2つの値を返す作成関数
#property strict
void OnInit() {

int a = 3;
int b = 7;
int c, d;

my_function(a, b, c, d);                        // 足し算と掛け算の2つの結果を返す関数

Print("結果:","a + b = ", c, " a x b = ", d);
}

void my_function(int a, int b, int &c, int &d){ // 足し算と掛け算の2つの結果を返す関数
   c = a + b;
   d = a * b;
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

2つの値を返す関数の結果

1つの関数内に計算をまとめることで、コードが効率的で見やすくなり、プログラミングミスを軽減することができます。

上記は作成した関数でしたが、標準で備わっている関数でも参照渡しができるものがあります。詳しくはこちらを参考にしてください。

タイトルとURLをコピーしました