動的配列
最大で4次元配列まで宣言できます。
動的配列(最初の次元の角括弧([])の値が指定されていない時)を宣言した場合、
コンパイラは自動的に動的配列を生成します。
動的配列は可視領域を超えた時に自動的に開放されます。
静的配列
すべての次元配列を明示的に指定した場合、コンパイラは事前に必要なメモリサイズを割り当てます。
この様な配列は静的配列と言われます。
静的配列を用いても、コンパイラは動的配列の為の追加メモリを割り当てます。
関数の引数として静的配列を渡した時に動的配列が作成されます。
サンプルソース:
int OnInit(){
double stat_array[5];
tmp_function(stat_array);
return 0;
}
void tmp_function(double& array[]) {
int new_size;
new_size = ArrayResize(array,100);
Print(new_size);
}
構造体の配列
構造体メンバが静的配列で宣言される時、動的配列は作成されません。
これはWindows APIで使用されるデータ構造体の互換性を確実にする為です。
しかし静的配列で宣言された構造体メンバはMQL4関数に使用する事も出来ます。
静的配列の構造体メンバを渡す時に、一時的に動的配列が作成されます。