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结构初始化? [复制]的主要内容,如果未能解决你的问题,请参考以下文章