多能工生産技術者の日常

20歳からFXの自動売買を開発しています。24歳からは株式投資等で純資産1000万円を目指します。


スポンサードリンク

【MQL4】~2つ以上の値をreturnしたい~

スポンサーリンク

KeyKです。今週は試験でバタバタなので、以前つまづいた「関数から2つ以上の値をreturnする方法」について書きます。

関数から2つ以上の値を返せるのか?

基本的に関数を使用する場合、returnで返ってくる値は1つだけです。では2つ以上の値はreturnできないのか?いくつか方法はありますが、今回は参照渡しという手法でやります。

参照渡しとは?

参照渡しの反対を「値渡し」といいます。つまり、関数に値だけを渡して処理させるため、もとの変数(アドレス)に入っている値は変わりません。
一方、「参照渡し」という方法は、値の格納されている変数のアドレスを引数として渡します。つまり、もとの変数(アドレス)に入っている値が変わります。

5つの値が入った配列を、正の値は1、負の値は0とする例をやってみます。
①まず、配列arrに5つの値を格納します。

int arr[5] = {-4, 1, -6, 3, 9};

②正の値を1、負の値を0とする関数を作ります。

void change_arr(int &arr_after[])
{
    for(int i =0; i < ArrayRange(arr_after, 0); i++){
        if(arr_after[i] >= 0)  arr_after[i] = 1;
        else arr_after[i] = 0;
    }
}

ここで注意点ですが、関数の引数に&を付けます。こうすることで、配列の先頭アドレスを渡すことができます。

③関数を実行する

change_arr(arr)

すると、配列arrの中身は以下のようになります。

arr[5] = {0, 1, 0, 1, 1};


もとの配列が変わっています。この参照渡しの方法を使えば、配列に値を代入することができ、複数の値を取得することが出来ます。

※ 値渡しや参照渡しについては、理屈的に理解できていない点があるのでご了承ください。


参考にしたサイトは以下にあります。
autoforex.blog.fc2.com



   

プライバシーポリシー お問い合わせ