構造体指定初期化
1399 ワード
標準C 89では、初期化された配列または構造体の要素の順序と同様に、初期化文の要素が一定の順序で現れる必要がある.
ISO C 99では、対応する配列の下付きまたは構造体のメンバー名を示す任意の順序でこれらの要素を与えることができます.
gccはANSI Cのstruct構造体の初期化形式を採用している.
1
struct
s
2
{
3
int
a;
4
int
b;
5
};
6
7
struct
s i
=
8
{
9
.a
=
3
,
10
.b
=
4
,
11
};
12
配列初期化も同様です.
1
int
arr[
3
]
=
{[
2
]
=
3
, [
0
]
=
2
,};
これらはなぜこのような形式で初期化されるのかよく理解され、形式上i.a=3である.arr[2] = 3; 初期化は名前を省くだけで、後ろの部分はカッコ内に入れました.「
1
struct
s
2
{
3
int
a;
4
int
b;
5
};
6
7
struct
s i
=
8
{
9
a :
3
,
10
b :
4
,
11
};
12
参照先:http://www.kerneltravel.net/newbie/gcc_man.html#5.22この文章には「
http://linuxprograms.wordpress.com/2008/03/07/c-structure-initialization-advanced/
ISO C 99では、対応する配列の下付きまたは構造体のメンバー名を示す任意の順序でこれらの要素を与えることができます.
gccはANSI Cのstruct構造体の初期化形式を採用している.
1
struct
s
2
{
3
int
a;
4
int
b;
5
};
6
7
struct
s i
=
8
{
9
.a
=
3
,
10
.b
=
4
,
11
};
12
配列初期化も同様です.
1
int
arr[
3
]
=
{[
2
]
=
3
, [
0
]
=
2
,};
これらはなぜこのような形式で初期化されるのかよく理解され、形式上i.a=3である.arr[2] = 3; 初期化は名前を省くだけで、後ろの部分はカッコ内に入れました.「
[index]
」または「.fieldname
」がインジケータである.古いバージョン:非標準の初期化形式1
struct
s
2
{
3
int
a;
4
int
b;
5
};
6
7
struct
s i
=
8
{
9
a :
3
,
10
b :
4
,
11
};
12
参照先:http://www.kerneltravel.net/newbie/gcc_man.html#5.22この文章には「
.fieldname:
」という初期化形式があると言っていますが、間違っているようです.fieldnameの前にはありません.http://blog.hjenglish.com/bedford/articles/1078996.html http://linuxprograms.wordpress.com/2008/03/07/c-structure-initialization-advanced/