定义一个结构体:
#define LENGTH 256 struct book { char title[LENGTH]; char author[LENGTH]; float value; };
初始化方法:
(1)使用一个花括号括起来、逗号分隔的初始化项目列表进行初始化。每个初始化项目必须和要初始化的结构体成员类型相匹配。(类似于数组的初始化)
例如:
struct book java = { "Thinking in Java", "Bruce Eckel", 108.00 };
(2)结构体的指定初始化项目
C99支持结构体的指定初始化项目,其语法与数组的指定初始化项目相似。只是,结构的指定初始化项目使用点运算符和成员名(而不是方括号和索引值)来标识具体的元素。例如,只初始化book结构的成员value,
struct book java={.value = 108.00};
可以按任意的顺序使用指定初始化项目:
struct book java = { .value = 108.00, .author = "Bruce Eckel", .title = "Thinking in Java" };
正像数组一样,跟在一个指定初始化项目之后的常规初始化项目为跟在指定成员后的成员提供了初始化值。另外,对特定成员的最后一次赋值是它实际获得的值:
struct book java = { .value = 108.00, .auther = "Bruce Eckel", 100 };
value的最终值为100。
注:这种结构体的初始化方式在Linux内核代码中很常见