C结构初始化?

C结构初始化?,c,initialization,structure,C,Initialization,Structure,如果结构中的一个字段本身就是结构,如何初始化结构 struct A { int n; } struct B { A a; } b; 您可以通过以下语句初始化n。这就是你要找的吗 b.a.n = 10; 您需要使用更多的大括号(实际上,它们是可选的,但GCC最近发出了警告)。下面是一个例子: struct s1 { int a; int b; }; struct s2 { int c; struct s1 s; }; struct s2 my_s2 = { 5, { 6, 3 } };

如果结构中的一个字段本身就是结构,如何初始化结构

struct A
{
int n;
}

struct B
{
A a;
} b;
您可以通过以下语句初始化n。这就是你要找的吗

b.a.n = 10;

您需要使用更多的大括号(实际上,它们是可选的,但GCC最近发出了警告)。下面是一个例子:

struct s1 { int a; int b; };
struct s2 { int c; struct s1 s; };

struct s2 my_s2 = { 5, { 6, 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);

在用于定义语言的术语中,这是赋值而不是初始化的示例。在此上下文中,仅在声明对象时使用初始化器。仅当成员
s
完全初始化(即所有成员)时才可选,如果您只想部分初始化结构,则需要。在C99中,您可以使用以下易于维护和阅读的符号:
struct s2 my_s2={.c=5,.s={.a=6,.b=3};