struct date nt day i char month 4; int year; 该例定义了一个名为date的结构类型它由3个成 员项组成: 成员day,是一个int数据对象; 成员 month,是具有个4元素的字符型数组 成员year,也是一个int型数据对象
11 struct date { int day ; char month[4] ; int year ; } ; 该例定义了一个名为date 的结构类型, 它由3个成 员项组成: 成员day ,是一个 int 数据对象; 成员month,是具有个4元素的字符型数组; 成员year ,也是一个 int 型数据对象
而对于结构类型定义: struct employee i 成员的数据类型 char name] double salary 可以是先前已定 义过的结构类型。 long tel i shar sex, struct date birthdate 该结构类型定义了如下的数据结构: birthdate name salary tel sex day month year 12
12 struct employee { char name[20] ; double salary ; long tel ; char sex ; struct date birthdate ; } ; 而对于结构类型定义: 该结构类型定义了如下的数据结构: 成员的数据类型 可以是先前已定 义过的结构类型。 name salary tel sex birthdate day month year
2、结构变量的定义必须是前面已经 定义过的结构类 定义了结构类型型名。如前面定有的数据类 型关键字那样定义人义过的山等其定义形式 是 sr构类型名结构变量,结构变量,… 例如: struct date birthdate, nationalday, hiredate C编译程序将为这三个date型的结构变量各分 配如下的存储空间: day month year 13
13 2、结构变量的定义 定义了结构类型后,便可以象用C固有的数据类 型关键字那样定义该结构类型的变量,其定义形式 是: struct 结构类型名 结构变量1 , 结构变量2 , … ; 必须是前面已经 定义过的结构类 型名。如前面定 义过的date等 例如: struct date birthdate , nationalday , hiredate ; C编译程序将为这三个 date 型的结构变量各分 配如下的存储空间: day month year
从上面的这个例子可以看出: ■结构变量的存储空间分配是按照结构变量的诸成 员项顺序进行的。存储空间大小是各成员项所占空 间之和。大小可通过seof运算符对该结构名进行运 算得到。即有 sizeof( (struct结构名) 如date结构变量的大小 sizeof(struct date)应为8 ■同一结构类型变量的存储空间大小都相同。 ■只有在定义了结构类型名之后才能定义结构变量
14 从上面的这个例子可以看出: 结构变量的存储空间分配是按照结构变量的诸成 员项顺序进行的。 存储空间大小是各成员项所占空 间之和。大小可通过sizeof运算符对该结构名进行运 算得到。 即有: sizeof (struct 结构名) 同一结构类型变量的存储空间大小都相同。 如date结构变量的大小 sizeof(struct date)应为8。 只有在定义了结构类型名之后才能定义结构变量
C语言也允许定义无名结构,即缺省结构类型名。 例如 struct i int day char month 4; int year i 3 birthdate, nationalday, hiredate 这种定义结构类型及对应的结构变量方法适用 于程序中仅使用少数几个该类结构变量的情况。 15
15 这种定义结构类型及对应的结构变量方法适用 于程序中仅使用少数几个该类结构变量的情况。 struct { int day ; char month[4] ; int year ; } birthdate , nationalday , hiredate ; C语言也允许定义无名结构,即缺省结构类型名 。 例如: