C结构初始化? [复制]

Posted

技术标签:

【中文标题】C结构初始化? [复制]【英文标题】:C structure initialization? [duplicate] 【发布时间】:2011-03-11 18:43:25 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

struct s2 my_s2 =  5,  6, 3  ;

【讨论】:

仅在成员 s 完全初始化(即所有成员)时才可选,如果您只想部分初始化结构,则必须这样做。 在 C99 中,您可以使用以下更易于维护和阅读的符号:struct s2 my_s2 = .c = 5, .s = .a = 6, .b = 3 ;【参考方案2】:

结构嵌套

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

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);

【讨论】:

【参考方案3】:
struct A

int n;


struct B

A a;
 b;

您可以通过以下语句初始化 n。这就是你要找的东西吗?

b.a.n = 10;

【讨论】:

在用于定义语言的术语中,这是 assignment 而不是 initialisation 的示例。在这种情况下,初始化器仅在对象声明时使用。

以上是关于C结构初始化? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

c语言结构体初始化

将初始值设置为 c 中结构的字段? [复制]

c语言如何实现结构体的深度复制

C ++使用互斥字段初始化结构

浅谈C语言中结构体的初始化

C中结构体内有一个成员是二维数组,可以直接赋值另一个一维数组吗?