目次
1. MQL5のArrayInitializeとは何か
1.1 ArrayInitializeの基本概念
ArrayInitialize は、MQL5で配列(array)のすべての要素を同じ値で一括初期化するための関数です。 配列とは「同じ型のデータを複数まとめて扱うデータ構造」のことで、EA(自動売買プログラム)やインジケーターでは次のような用途で頻繁に使われます。- 価格データの保存
- インジケーターバッファ(指標計算用の配列)
- トレード状態の管理
- 計算用ワークバッファ
MQL5では配列を宣言しただけでは、要素が意図した値で初期化されているとは限りません。
環境や配列の種類(静的配列・動的配列)によっては、未定義の値(garbage value:意味のない値)が入る可能性があります。
そのため、EAやインジケーターでは次のような処理が重要になります。
- 配列を作成する
- 初期値を設定する
- 計算処理を行う
double buffer[10];
ArrayInitialize(buffer,0);
この処理により、buffer の中身は次のようになります。
0
0
0
0
0
0
0
0
0
0
配列のサイズが100でも1000でも、1行のコードで一括初期化できます。
ArrayInitializeを使うメリット
配列初期化をループで書くことも可能ですが、ArrayInitializeを使う方がシンプルです。 ループで初期化する例for(int i=0;i<10;i++)
{
buffer[i]=0;
}
ArrayInitializeを使う例
ArrayInitialize(buffer,0);
このように
- コードが短い
- 可読性が高い(読みやすい)
- ミスが起きにくい
EA・インジケーターでの典型用途
実務では次のような場面でよく使用されます。 1 インジケーターバッファ初期化ArrayInitialize(Buffer,EMPTY_VALUE);
EMPTY_VALUE(描画しない値)を入れることで、インジケーターの表示を制御します。
2 計算バッファのリセット 計算用配列を再利用する場合、前回の値が残ると誤計算の原因になります。
ArrayInitialize(workBuffer,0);
3 状態管理配列の初期化 EAではポジション状態などを配列で管理することがあります。
ArrayInitialize(tradeState,-1);
初心者がよく誤解するポイント
① 宣言しただけで配列が初期化されると思ってしまう 例double data[100];
この状態では 意図した値で初期化されている保証はありません。
安全なプログラムを書くためには、明示的に初期化することが推奨されます。
② 配列サイズが0のまま使う 動的配列の場合
double data[];
ArrayInitialize(data,0);
このコードは意味を持ちません。
理由は 配列サイズが0だからです。
正しい手順は次の通りです。
ArrayResize(data,100);
ArrayInitialize(data,0);
③ OnTickで毎回初期化してしまう EA初心者によくあるミスです。
void OnTick()
{
ArrayInitialize(buffer,0);
}
これを行うと
- 計算結果が毎Tick消える
- ロジックが正常に動かない
OnInit()- 計算開始前
ArrayInitializeはシンプルな関数ですが、EA・インジケーターの安定動作に重要な基礎機能です。 特にバッファ処理やデータ管理では頻繁に使われるため、基本動作を正確に理解しておくことが重要です。
2. ArrayInitializeの構文と使い方
2.1 ArrayInitializeの基本構文
MQL5の ArrayInitialize は、配列のすべての要素を同じ値で初期化するための関数です。 基本構文は次の通りです。ArrayInitialize(array,value);
引数
| 引数 | 内容 |
|---|---|
| array | 初期化する配列 |
| value | 配列のすべての要素に設定する値 |
使用例(基本)
double data[5];
ArrayInitialize(data,0);
結果
data[0] = 0
data[1] = 0
data[2] = 0
data[3] = 0
data[4] = 0
配列サイズが大きくても、1行で全要素を初期化できます。
2.2 使用できる配列型
ArrayInitializeは、MQL5の数値型配列で使用できます。 主な対象型| 型 | 例 |
|---|---|
| int | 整数 |
| double | 小数 |
| float | 小数 |
| long | 大きな整数 |
| ushort / short | 短整数 |
int numbers[10];
ArrayInitialize(numbers,1);
結果
1 1 1 1 1 1 1 1 1 1
2.3 動的配列での使用方法
MQL5では 動的配列(サイズを後から変更できる配列) がよく使われます。 この場合、ArrayResize → ArrayInitialize の順で使うのが一般的です。 例double buffer[];
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
処理の流れ
- 配列サイズを100に変更
- 全要素を0で初期化
2.4 インジケーターバッファの初期化
インジケーターでは、EMPTY_VALUE を使った初期化がよく行われます。 EMPTY_VALUEとは → チャートに表示しない値 例ArrayInitialize(Buffer,EMPTY_VALUE);
この処理により
- 初期状態ではラインを描画しない
- 計算された部分だけ表示する
2.5 初心者がつまずきやすいポイント
① 配列サイズが0のまま実行
次のコードは意味を持ちません。double data[];
ArrayInitialize(data,0);
理由
配列サイズが 0だから
正しい書き方
ArrayResize(data,50);
ArrayInitialize(data,0);
② 初期化したあと値を書き換えてしまう
例ArrayInitialize(buffer,0);
buffer[0] = 5;
この場合
5
0
0
0
...
になります。
ArrayInitializeは一括設定するだけで、その後の変更は通常通り可能です。
③ OnTickで毎回実行してしまう
EA初心者がやりがちなミスです。void OnTick()
{
ArrayInitialize(buffer,0);
}
このコードは
- 計算結果が毎Tickリセットされる
- EAロジックが壊れる
OnInit()- 計算処理の開始前
2.6 ArrayInitializeの戻り値
ArrayInitializeは戻り値として配列サイズを返します。 例int size = ArrayInitialize(buffer,0);
size には 配列の要素数 が入ります。
ただし、実務では戻り値を使うケースは多くありません。
通常は 初期化処理として単独で使うことが多いです。
ArrayInitializeは非常にシンプルな関数ですが、EAやインジケーターのバッファ管理では頻繁に使用される重要な基本機能です。 特に 動的配列・インジケーターバッファ・計算バッファの初期化では必須の知識になります。
3. ArrayInitializeの実用コード例(EA・インジケーター)
3.1 EAでの配列初期化の基本例
EA(Expert Advisor:自動売買プログラム)では、計算用の配列を使う場面が多くあります。 例えば、価格データや計算結果を保存するバッファとして配列を利用します。 次の例は、計算用配列を0で初期化する基本パターンです。double priceBuffer[100];
int OnInit()
{
ArrayInitialize(priceBuffer,0);
return(INIT_SUCCEEDED);
}
このコードでは
priceBufferを100要素の配列として宣言- EA起動時(
OnInit())にすべて 0 に初期化
0
0
0
0
0
...
この処理を行うことで、過去データの残りや未定義値による誤計算を防ぐことができます。
3.2 動的配列の実用例
EAでは、動的配列(dynamic array)を使うケースも多くあります。 動的配列とは、ArrayResize()でサイズを変更できる配列です。
実務では次のパターンがよく使われます。
double buffer[];
int OnInit()
{
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
return(INIT_SUCCEEDED);
}
処理の流れ
- 配列サイズを100に設定
- 全要素を0で初期化
よくある失敗
初心者に多いミスは次のコードです。double buffer[];
ArrayInitialize(buffer,0);
このコードは正しく動作しません。
理由
配列サイズが 0のまま だからです。
正しい手順
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
3.3 インジケーターでの使用例
インジケーターでは、描画バッファ(Indicator Buffer)を初期化するためにArrayInitialize がよく使われます。
特に重要なのが EMPTY_VALUE を使った初期化です。
double Buffer[];
int OnInit()
{
SetIndexBuffer(0,Buffer);
ArrayInitialize(Buffer,EMPTY_VALUE);
return(INIT_SUCCEEDED);
}
EMPTY_VALUEとは
チャートに描画されない値
を意味します。
そのため
- 計算されていない部分は表示しない
- 必要な部分だけ描画する
インジケーターでの典型的な使い方
インジケーターでは次のような流れになります。- バッファを設定
- バッファをEMPTY_VALUEで初期化
- 計算された部分だけ値を入れる
ArrayInitialize(Buffer,EMPTY_VALUE);
Buffer[i] = Close[i];
この方法により
- 未計算部分は表示されない
- 計算部分だけラインが描画される
3.4 計算バッファのリセット
EAやインジケーターでは、計算用配列を再利用するケースがあります。 その場合、前回の計算結果が残ると誤動作の原因になります。 例double calcBuffer[50];
void ResetBuffer()
{
ArrayInitialize(calcBuffer,0);
}
この関数を呼び出すことで、計算バッファをリセットできます。
3.5 OnTickで初期化してしまう失敗
EA初心者がよくやるミスです。void OnTick()
{
ArrayInitialize(buffer,0);
}
このコードは一見問題なさそうですが、実際には大きな問題があります。
理由
- 毎Tickデータがリセットされる
- 計算結果が保存されない
- EAロジックが崩れる
OnInit()- 計算開始前
3.6 実務でよく使われる初期化値
ArrayInitializeでは、用途によって初期値を使い分けます。| 初期値 | 用途 |
|---|---|
| 0 | 計算バッファ |
| -1 | 状態管理 |
| EMPTY_VALUE | インジケーター |
| 999999 | 特殊フラグ |
ArrayInitialize(tradeState,-1);
この場合
-1= 未処理0= 処理済み
ArrayInitializeは単純な関数ですが、EA・インジケーターの安定動作に直結する基本機能です。 特に配列管理を行うプログラムでは、適切な初期化がバグ防止に大きく影響します。
4. ArrayInitializeとArrayResizeの違い
4.1 役割の違い
MQL5で配列を扱うとき、初心者が混同しやすい関数が ArrayInitialize と ArrayResize です。 この2つは似ているように見えますが、役割はまったく異なります。| 関数 | 役割 |
|---|---|
| ArrayResize | 配列のサイズを変更する |
| ArrayInitialize | 配列の値を初期化する |
- ArrayResize → 配列の大きさを決める
- ArrayInitialize → 配列の中身を設定する
4.2 ArrayResizeの基本動作
ArrayResizeは、動的配列のサイズを変更する関数です。 基本構文ArrayResize(array,new_size);
例
double buffer[];
ArrayResize(buffer,10);
この処理を行うと、buffer は 10要素の配列になります。
buffer[0]
buffer[1]
buffer[2]
...
buffer[9]
ただし、この段階では 値は初期化されていない可能性があります。
そのため、多くの場合は ArrayInitializeとセットで使用します。
4.3 実務でよく使う基本パターン
実務では次の順番で使うのが基本です。ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
処理の意味
- 配列サイズを100に変更
- 配列の全要素を0で初期化
4.4 よくある間違い(順序ミス)
初心者がやりがちなミスが 順番を逆にすることです。 誤った例ArrayInitialize(buffer,0);
ArrayResize(buffer,100);
このコードの問題点
- 初期化したあとサイズ変更
- 新しく確保された領域が初期化されない
- 配列の後半に未定義値が残る
- 計算バグの原因になる
4.5 ArrayResizeだけでは安全ではない理由
次のコードを見てください。double buffer[];
ArrayResize(buffer,100);
この時点で
buffer[0] = ?
buffer[1] = ?
buffer[2] = ?
...
値が保証されていません。
そのため安全な書き方は次の通りです。
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
4.6 EA開発での典型パターン
EAでは次のようなコードがよく使われます。double priceBuffer[];
int OnInit()
{
ArrayResize(priceBuffer,1000);
ArrayInitialize(priceBuffer,0);
return(INIT_SUCCEEDED);
}
この処理の意味
- 計算用バッファを1000要素確保
- 初期状態を0に設定
- 未定義値の混入を防ぐ
- 計算ロジックを安定させる
4.7 インジケーターでの典型パターン
インジケーターでも同様に使われます。ArrayResize(Buffer,rates_total);
ArrayInitialize(Buffer,EMPTY_VALUE);
この処理の意味
- チャートデータ数に合わせて配列サイズ変更
- 描画しない部分をEMPTY_VALUEで初期化
4.8 初心者がつまずくポイント
① 静的配列と動的配列を混同する
静的配列double data[100];
動的配列
double data[];
ArrayResize(data,100);
動的配列では 必ずArrayResizeが必要です。
② ArrayResize後の初期化を忘れる
よくあるコードArrayResize(buffer,100);
このままだと 未定義値が残る可能性があります。
安全な書き方
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
③ 配列サイズを頻繁に変更する
配列サイズを毎Tick変更すると- メモリ確保が頻発する
- EAパフォーマンスが低下する
- 初期化時にサイズ確保
- できるだけ再利用
ArrayInitializeとArrayResizeは、MQL5で配列を扱う上で必須の基本関数です。 両者の役割を理解しておくことで、EAやインジケーターの安定性が大きく向上します。
5. ArrayInitializeが使えないケースと注意点
5.1 すべての配列に使えるわけではない
ArrayInitializeは便利な関数ですが、すべての配列型に使用できるわけではありません。 基本的に使用できるのは 数値型(numeric type)の配列です。 主に使用できる型| 型 | 説明 |
|---|---|
| int | 整数 |
| double | 小数(最もよく使う) |
| float | 小数 |
| long | 大きな整数 |
| short | 短整数 |
double buffer[10];
ArrayInitialize(buffer,0);
このコードは問題なく動作します。
5.2 string配列では使用できない
初心者がよく遭遇するのが string配列の初期化です。 string型では ArrayInitializeは使用できません。 例string names[10];
ArrayInitialize(names,"");
このコードはコンパイルエラーになります。
理由
ArrayInitializeは 数値配列専用の関数だからです。
string配列の正しい初期化方法
string配列は forループで初期化します。string names[10];
for(int i=0;i<10;i++)
{
names[i] = "";
}
このように手動で設定する必要があります。
5.3 構造体配列では使えない
MQL5では 構造体(struct)配列を使うこともあります。 しかし、この場合もArrayInitializeは使用できません。 例struct TradeData
{
double price;
int type;
};
TradeData trades[10];
この配列を次のように初期化することはできません。
ArrayInitialize(trades,0);
理由
構造体は 複数の型を持つデータ構造だからです。
構造体配列の初期化方法
構造体配列は次のように初期化します。for(int i=0;i<10;i++)
{
trades[i].price = 0;
trades[i].type = -1;
}
このように メンバーごとに値を設定する必要があります。
5.4 配列サイズ0の状態では意味がない
次のコードも初心者がよく書くパターンです。double data[];
ArrayInitialize(data,0);
このコードはエラーにはなりませんが意味がありません。
理由
配列サイズが 0だからです。
正しい書き方
ArrayResize(data,100);
ArrayInitialize(data,0);
この順番を守る必要があります。
5.5 OnTickでの多用は非効率になる
ArrayInitializeは便利ですが、頻繁に実行するとパフォーマンスに影響する可能性があります。 例void OnTick()
{
ArrayInitialize(buffer,0);
}
このコードは
- 毎Tick配列を初期化
- CPU処理が増える
- 計算結果が消える
OnInit()- 計算開始前
5.6 初期化値の選び方に注意
ArrayInitializeでは、用途に応じて適切な値を選ぶ必要があります。 よく使われる値| 初期値 | 用途 |
|---|---|
| 0 | 計算用バッファ |
| -1 | 状態管理 |
| EMPTY_VALUE | インジケーター |
| DBL_MAX | 特殊処理 |
ArrayInitialize(Buffer,EMPTY_VALUE);
インジケーターでは、この初期化を行うことで
未計算部分をチャートに表示しない動作を実現できます。
5.7 初期化忘れによるバグ
EA開発で実際によくあるバグが 初期化忘れです。 例double result[100];
この状態で計算を行うと
- 過去データが残る
- 未定義値が混入する
- 計算結果が壊れる
ArrayInitialize(result,0);
配列初期化は、EAの安定動作のための基本ルールと言えます。
ArrayInitializeは単純な関数ですが、使用できる配列型や使用タイミングを理解していないとバグの原因になります。 特に string配列や構造体配列では使用できない点は重要です。
6. ArrayInitializeでよくあるエラーと解決方法
6.1 「配列が初期化されない」問題
初心者が最もよく遭遇するのが ArrayInitializeを実行したのに値が変わらないように見えるケースです。 原因の多くは 配列サイズが0のまま になっていることです。 誤った例double data[];
ArrayInitialize(data,0);
このコードでは、配列サイズが 0要素 のため、
初期化する対象が存在しません。
そのため、実質的に 何も処理されていない状態になります。
正しいコード
double data[];
ArrayResize(data,100);
ArrayInitialize(data,0);
手順
- ArrayResizeでサイズ確保
- ArrayInitializeで初期化
6.2 コンパイルエラー(string配列)
次のコードはコンパイルエラーになります。string names[10];
ArrayInitialize(names,"");
エラー理由
ArrayInitializeは数値型配列のみ対応
つまり次の型には使用できません。
- string
- struct
- class
string names[10];
for(int i=0;i<10;i++)
{
names[i] = "";
}
string配列は ループ初期化が必要です。
6.3 配列サイズ変更後に値が不安定
次のコードは初心者が書きがちな例です。double buffer[];
ArrayResize(buffer,100);
この状態では、配列の中身は
?
?
?
?
...
のように 未定義値になる可能性があります。
安全なコード
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
このように サイズ変更 → 初期化 の順にします。
6.4 インジケーターが途中で消える
インジケーター開発でよくあるトラブルです。 例ArrayInitialize(Buffer,0);
この場合、値0が描画されるため
意図しないラインが表示されることがあります。
インジケーターバッファでは通常
ArrayInitialize(Buffer,EMPTY_VALUE);
を使用します。
理由
EMPTY_VALUEは
チャートに表示しない値
だからです。
6.5 OnTickで毎回初期化してしまう
EA初心者に多いミスです。 例void OnTick()
{
ArrayInitialize(buffer,0);
}
問題点
- 毎Tickデータが消える
- 計算結果が保存されない
- EAロジックが壊れる
OnInit()- 計算開始前
6.6 インジケーター計算との相性
インジケーターでは prev_calculated を使った計算最適化が一般的です。 この場合、毎回ArrayInitializeすると 計算効率が大きく落ちる可能性があります。 例ArrayInitialize(Buffer,EMPTY_VALUE);
この処理は
- 初回計算
- バッファリセット
6.7 配列サイズを頻繁に変更する問題
次のようなコードはパフォーマンスに悪影響を与える可能性があります。void OnTick()
{
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
}
理由
- メモリ再確保が頻発する
- EA処理速度が低下する
OnInit()
で配列サイズ確保
↓
OnTick()
では再利用
という設計にします。
6.8 初期値設計ミス
配列初期化の値は 用途に合わせて選ぶ必要があります。 例| 初期値 | 意味 |
|---|---|
| 0 | 計算用 |
| -1 | 未処理 |
| EMPTY_VALUE | インジケーター |
| DBL_MAX | 特殊値 |
ArrayInitialize(signal,-1);
この場合
- -1 → 未判定
- 1 → BUY
- 2 → SELL
ArrayInitializeは非常にシンプルな関数ですが、 配列サイズ・配列型・実行タイミングを理解していないとトラブルの原因になります。
7. ArrayInitializeのベストプラクティス(実務での使い方)
7.1 配列は作成直後に必ず初期化する
MQL5で配列を扱う場合、配列作成直後に初期化する習慣を持つことが重要です。 配列を宣言しただけでは、要素の値が保証されない可能性があります。 安全な基本パターンは次の通りです。double buffer[100];
ArrayInitialize(buffer,0);
動的配列の場合は次の順序になります。
double buffer[];
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
ポイント
- サイズ確保 → 初期化
- 未定義値を排除する
7.2 EAではOnInitで初期化する
EAでは、配列初期化は OnInit() 内で行うのが基本設計です。 例double calcBuffer[200];
int OnInit()
{
ArrayInitialize(calcBuffer,0);
return(INIT_SUCCEEDED);
}
この設計にすると
- EA起動時に一度だけ初期化
- OnTickでは再利用
7.3 インジケーターではEMPTY_VALUEを使う
インジケーター開発では、通常の数値ではなく EMPTY_VALUE を使って初期化するケースが多くなります。 例ArrayInitialize(Buffer,EMPTY_VALUE);
理由
- 未計算部分を表示しない
- 描画バッファを正しく管理できる
0 で初期化すると
- チャートに不要なラインが表示される
- インジケーターの表示が崩れる
7.4 配列サイズはなるべく固定する
配列サイズを頻繁に変更すると、 メモリ確保が繰り返されてパフォーマンスが低下する可能性があります。 避けたいコードvoid OnTick()
{
ArrayResize(buffer,100);
}
推奨設計
int OnInit()
{
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
return(INIT_SUCCEEDED);
}
配列は
- 起動時に確保
- 実行中は再利用
7.5 状態管理用配列の初期化
EAでは、配列を 状態管理に使うケースもあります。 例int tradeState[20];
ArrayInitialize(tradeState,-1);
このようにすると
| 値 | 意味 |
|---|---|
| -1 | 未処理 |
| 0 | 待機 |
| 1 | BUY |
| 2 | SELL |
- 複数ポジション管理
- シグナル履歴管理
7.6 初期化値を用途で使い分ける
ArrayInitializeの初期値は用途に応じて設計します。 よく使われる初期値| 値 | 用途 |
|---|---|
| 0 | 計算用配列 |
| -1 | 状態管理 |
| EMPTY_VALUE | インジケーター |
| DBL_MAX | 特殊処理 |
ArrayInitialize(priceBuffer,0);
ArrayInitialize(signalBuffer,-1);
ArrayInitialize(indicatorBuffer,EMPTY_VALUE);
このように役割ごとに初期値を決めると、
ロジックの可読性が向上します。
7.7 初期化タイミングを設計する
実務では、配列初期化のタイミングを設計することが重要です。 一般的なパターン| タイミング | 用途 |
|---|---|
| OnInit | EA起動時 |
| 計算開始前 | バッファリセット |
| 条件発生時 | 状態リセット |
- 不必要な初期化を避ける
- 必要なタイミングだけ実行する
ArrayInitializeは非常にシンプルな関数ですが、 配列管理・インジケーター描画・EA状態管理など、MQL5プログラムの多くの場面で使われる基本機能です。 配列サイズ確保、初期化値、実行タイミングを適切に設計することで、 EAやインジケーターの安定性と可読性を大きく向上させることができます。
8. MQL5 ArrayInitializeのよくある質問(FAQ)
8.1 ArrayInitializeとは何ですか?
ArrayInitializeは、配列のすべての要素を同じ値で一括設定するMQL5の関数です。 配列初期化をループで書く代わりに、1行のコードで処理できます。 例double buffer[10];
ArrayInitialize(buffer,0);
このコードを実行すると、buffer の全要素が 0 になります。
8.2 ArrayInitializeは動的配列でも使えますか?
使用できます。 ただし、配列サイズを確保してから使用する必要があります。 正しい例double data[];
ArrayResize(data,100);
ArrayInitialize(data,0);
誤った例
double data[];
ArrayInitialize(data,0);
この場合、配列サイズが0のため意味のある処理になりません。
8.3 string配列でもArrayInitializeは使えますか?
使用できません。 ArrayInitializeは 数値型配列専用の関数です。 対象型の例- int
- double
- float
- long
string names[10];
for(int i=0;i<10;i++)
{
names[i] = "";
}
8.4 ArrayInitializeとArrayResizeの違いは何ですか?
役割が異なります。| 関数 | 役割 |
|---|---|
| ArrayResize | 配列サイズを変更する |
| ArrayInitialize | 配列の値を設定する |
ArrayResize(buffer,100);
ArrayInitialize(buffer,0);
つまり
- 配列サイズを決める
- 値を初期化する
8.5 インジケーターではどの値で初期化するべきですか?
通常は EMPTY_VALUE を使用します。 例ArrayInitialize(Buffer,EMPTY_VALUE);
EMPTY_VALUEを使う理由
- 未計算部分をチャートに表示しない
- インジケーター描画を正しく制御できる
0 を使うと、チャートに不要なラインが表示される可能性があります。
8.6 ArrayInitializeは毎Tick実行しても問題ありませんか?
通常は 推奨されません。 理由- 計算結果が毎Tickリセットされる
- EAロジックが正常に動作しない可能性
- パフォーマンス低下
OnInit()- 計算開始前
- バッファリセット時
8.7 ArrayInitializeの戻り値は何ですか?
ArrayInitializeは 配列の要素数を返します。 例int size = ArrayInitialize(buffer,0);
この場合 size には 配列サイズが入ります。
ただし、実務では戻り値を使用するケースはあまり多くありません。
8.8 ArrayInitializeを使わない場合どうなりますか?
配列を宣言しただけでは、値が保証されない可能性があります。 例double buffer[100];
この状態では
- 未定義値が入る
- 過去データが残る
- 計算結果が壊れる
ArrayInitialize(buffer,0);
のように 明示的に初期化することが安全なプログラム設計になります。