C言語構造体初期化

3740 ワード

まず、構造体を定義します.
struct init_member
{
    int first;
    double second;
    char* third;
    float four;
};

一、定義時付与
struct init_member test = {-10, 3.141590, "method one", 0.25}

対応する順番に注意が必要で、ずれてはいけません.
二:定義後に個々に値を割り当てる
struct init_member test;

test.first = -10;
test.second = 3.141590;
test.third = "method two";
test.four = 0.25;

個々に決められた賦値なので順序は関係ありません.
三:定義時乱順付与(Cスタイル)
struct init_member test = {
    .second = 3.141590,
    .third = "method three",
    .first = -10,
    .four = 0.25
};

この方法はLinuxカーネル(kernel)でよく使われているので、いい方法です.
四:定義時乱順付与(C++スタイル)
struct init_member test = {
    second:3.141590,
    third:"method four",
    first:-10,
    four:0.25
};

この方法は前の方法と類似しており,ネット上ではC++スタイルと呼ばれ,key−valueキー値対の方法と同様に順序を考慮しない.
まとめ
個人的には第3と第4の方法が好きで、まずこのようにコードを書くのがコンパクトで、次に初期化は順序とは関係なく、初期化の時に直接対応するメンバー変数に値を付与し、エラー率が低い.