C言語構造体初期化
3740 ワード
まず、構造体を定義します.
一、定義時付与
対応する順番に注意が必要で、ずれてはいけません.
二:定義後に個々に値を割り当てる
個々に決められた賦値なので順序は関係ありません.
三:定義時乱順付与(Cスタイル)
この方法はLinuxカーネル(kernel)でよく使われているので、いい方法です.
四:定義時乱順付与(C++スタイル)
この方法は前の方法と類似しており,ネット上ではC++スタイルと呼ばれ,key−valueキー値対の方法と同様に順序を考慮しない.
まとめ
個人的には第3と第4の方法が好きで、まずこのようにコードを書くのがコンパクトで、次に初期化は順序とは関係なく、初期化の時に直接対応するメンバー変数に値を付与し、エラー率が低い.
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の方法が好きで、まずこのようにコードを書くのがコンパクトで、次に初期化は順序とは関係なく、初期化の時に直接対応するメンバー変数に値を付与し、エラー率が低い.