【发布时间】:2011-03-11 18:43:25
【问题描述】:
如果结构中的一个字段本身就是结构,我如何初始化结构?
【问题讨论】:
标签: c initialization structure
如果结构中的一个字段本身就是结构,我如何初始化结构?
【问题讨论】:
标签: c initialization structure
您需要使用更多的大括号(实际上,它们是可选的,但 GCC 近来会发出警告)。这是一个例子:
struct s1 { int a; int b; };
struct s2 { int c; struct s1 s; };
struct s2 my_s2 = { 5, { 6, 3 } };
【讨论】:
s 完全初始化(即所有成员)时才可选,如果您只想部分初始化结构,则必须这样做。
struct s2 my_s2 = { .c = 5, .s = { .a = 6, .b = 3 } };
如果结构中的一个字段本身就是结构,则可以初始化结构
struct add{
int house;
char road;
};
struct emp{
int phone;
struct add a;
};
struct emp e = { 123456, 23, "abc"};
printf("%d %d %c",e.phone,e.a.house,e.a.road);
【讨论】:
struct A
{
int n;
}
struct B
{
A a;
} b;
您可以通过以下语句初始化 n。这就是你要找的东西吗?
b.a.n = 10;
【讨论】: