1、struct 是 C 中重要的 ADT。但是在一般讲 C 的书中,往往只介绍了 struct 的定义、顺序初始化及位域。为了方便后面的介绍,先定义一个 struct 类型:struct Userint id; /idchar name100; /user namechar *home; /home directoryint passwd; /password;1 初始化struct 数据有 3 中初始化方法:顺序, C 风格及 C+风格的乱序。1)顺序这种方法很常见,在一般的介绍 C 的书中都有介绍。顺序初始化的特点是: 按照成员定义的顺序,从前到后逐个初始化;允许只初始化部分成员;在被初始化
2、的成员之前,不能有未初始化的成员。eg:struct User oneUser = 10, “Lucy“, “/home/Lucy“;初始化之后,oneUser 各个成员的值为:oneUser.id = 10;oneUser.name = “Lucy“;oneUser.home = “/home/Lucy“;oneUser.passwd = 0;2)乱序(C 风格)顺序的缺陷是必须按成员定义的顺序逐个初始化,不能间隔。而乱序的方式则很好的解决了这个问题,因为这种方式是按照成员名进行。eg:struct User oneUser = .name = “Lucy“,.id = 10,.home = “/home/Lucy“;3)乱序(C+风格)C+ 风格的乱序初始化方式跟 C 风格的一样,只是它更常用在 C+代码里。eg:struct User oneUser = name:“Lucy“,id:10,home:“/home/Lucy“;不论是哪种方式,都允许只初始化部分成员;未被初始化的成员默认为 0(指针类型的成员默认为 NULL)。两种乱序初始化方法,即可以用在 C 代码中,也可以用在 C+代码中。