動的配列オブジェクト

動的配列オブジェクト

動的配列

最大 4 次元の配列の宣言が可能です。動的配列(最初の角括弧ペアで値が指定されていない配列)が宣言されると、コンパイラは自動的にこのような構造の変数(動的配列オブジェクト)を作成し、適切な初期化のためのコードを提供します。

動的配列は、宣言されたブロックの視認性の領域を越えた時に、自動的に解放されます。

例:

double matrix[][10][20]; // 3 次元動的配列
ArrayResize(matrix,5);   // 最初の次元のサイズを設定する

静的配列 #

大サイズの配列の次元が明示的に指定されている場合、コンパイラは必要なメモリサイズを事前に割り当てます。このような配列は、静的配列と呼ばれています。それにもかかわらず、コンパイラは事前に割り当てられた静的バッファ(配列を格納するためのメモリの一部)に関連付けられている動的配列(オブジェクト)のために追加のメモリを割り当てます。

動的配列オブジェクトを作成するのは、この静的配列を関数にパラメータとして渡すことが必要になる可能性があるからです。

例:

double stat_array[5]; // 1 次元静的配列
some_function(stat_array);

bool some_function(double& array[])
{
if(ArrayResize(array,100)<0) return(false);

return(true);
}

構造体内の配列

静的配列が構造体のメンバとして宣言されている場合には、動的配列オブジェクトは作成されません。これは、Windows API で使用されるデータ構造の互換性を確保するためです。

しかし、構造体のメンバとして宣言されている静的配列も MQL5 関数に渡されることが出来ます。この場合、パラメータを渡す時に、一時オブジェクトの動的配列が作成されます。この配列は、構造体のメンバである静的配列にリンクされています。

Originally posted 2019-07-27 09:51:29.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">