配列や構造体は、以下の構文で初期化することができます。
int arr[10] = {1,2,3};
この時、配列の 0〜2 番目の要素は順に 1,2,3 で初期化されます。では、それ以降の 3〜9 番目の要素はどうなるのかというと、強制的に 0 で初期化されます。これを利用すると、memsetやZeroMemoryを使用せずとも配列や構造体の各要素を 0 で初期化することができます。
// 配列を0で初期化 int arr[10] = {0}; // 構造体のメンバを0で初期化 struct hoge { int a, b, c; double d, e, f; } st = {};
といった感じ。しかし、BCCでは配列を初期化するときの括弧({})を空にするとコンパイルエラーになってしまったので、int arr[10] = {0};
とひとつだけは要素を指定してやらないといけないようです(構造体の方はいらない)。
なお、この初期化の仕方は左辺値の型がPOD型の時のみ有効になります。それ以外はコンパイルエラーになるはず。非POD型にmemset関数を適用するのもご法度なので、そういう型を扱う場合は適切なコンストラクタを定義しましょう。
なんか意外と知られていないようなので書いてみました。