MQL4、MQL5 二次元配列変数 関数への渡し方をシェアしたいと思います。
下記の方法で出来るので、MQL4、MQL5で二次元配列の変数を関数に渡す場合は参照にして下さい。
関数の渡し方
下記のサンプルコードで説明します。
int priceA[2][2], priceB[2][2];
int OnInit(){
priceA[0][0] = 1;
priceA[0][1] = 10;
priceA[1][0] = 3;
priceA[1][1] = 20;
priceB[0][0] = 5;
priceB[0][1] = 15;
priceB[1][0] = 25;
priceB[1][1] = 35;
Print(priceB[0][0], priceB[0][1], priceB[1][0], priceB[1][1]);
priceinput(priceA, priceB);
Print(priceB[0][0], priceB[0][1], priceB[1][0], priceB[1][1]);
}
void priceinput(int &p1[][], int &p2[][] ){
p2[0][0] = p1[0][0];
p2[0][1] = p1[0][1];
p2[1][0] = p1[1][0];
p2[1][1] = p1[1][1];
}
1行目 二次元配列の変数の定義
二次元配列の変数 priceA[2][2]、priceB[2][2] の定義をします。これは2行2列の配列変数になります。
int priceA[2][2], priceB[2][2];
5~15行目 数値の代入と出力
数値を代入して、二次元配列p2を出力します。
priceBの出力結果は下記になります。
##Print(priceB[0][0], priceB[0][1], priceB[1][0], priceB[1][1]);
5152535
17行目 p2の配列にp1の配列を代入
次に、priceinput(priceA, priceB)の関数を呼び出します。
この時の二次元配列の関数引き渡しは、そのまま配列を代入します。
そして、関数側 priceinput の定義の1行目を確認すると、&p1[][], &p2[][] という&を付けます。
関数内は&を外して計算式を書きます。
void priceinput(int &p1[][], int &p2[][] ){
p2[0][0] = p1[0][0];
p2[0][1] = p1[0][1];
p2[1][0] = p1[1][0];
p2[1][1] = p1[1][1];
}
19行目 出力の確認
p2にp1が代入されたので、下記の出力がされます。
110320
まとめ
- 二次元配列の変数の定義はそのまま
- 関数の定義の時に、二次元配列の変数に『&』を付ける
通貨ペアなどで、多次元配列を用いることが多いと思います。そういう時は『&』を付けて対応しましょう。
因みに、MQL4、MQL5はC言語ベースなのですが、純粋にC言語のプログラムを記述する際、同様の定義の方法だと、C言語のコンパイラーでエラーになるので気を付けて下さい。
コメント