構造体を宣言と同時に初期化する

構造体を宣言した後、メンバ全てを0にする必要があるときがあります。
普通、ZeroMemory()を使って全て0に設定してやりますが
そんな事をしなくても宣言と同時に初期化することが出来ます。
やり方は簡単。次のように宣言すればいいだけです。


STARTUPINFO si = { 0 };

これは最初のメンバを 0に設定しています。
そして残りのメンバには 0で埋め尽くされる性質があります。
これを利用し次のようにすると


STARTUPINFO si = { sizeof(STARTUPINFO) };

構造体の最初のメンバにsizeof(STARTUPINFO)の値を設定し、以下のメンバに0が埋められます。
構造体には構造体のサイズを指定しなければならないものがありますが
こうやって指定すればコードがすっきりして便利です。

もちろん、初期化する時に 2つ以上の値を設定する事も出来ます。
以下のようにカンマで区切ってやればOKです。


RECT rc = { 0, 0, 640, 400 };

この場合は以下の様にやったのと同じ結果になります。


RECT rc;
rc.left   = 0;
rc.top    = 0;
rc.right  = 640;
rc.bottom = 400;

どのメンバに何の値を設定しているのか分かりにくくなりますが
いちいちメンバを設定するより簡単にできるので
よく使う構造体でメンバをしっかり把握している場合は便利です。

< 戻る << HOME ©1999-2001 by Akky, All right reserved.