注:(1)“结构类型名”和“数据项”的命名规则 ,与变量名相同 (2)数据类型相同的数据项,既可逐个、逐行 分别定义,也可合并成一行定义。 如:例1中sore类型也可改为如下形式: struct score/成绩结构类型和三门共4项组成 &char no 7; ∥学号 int scorel, score2, score3.;∥门成绩 (3)结构类型中的数据项,既可以是基本数据 类型,也允许是另一个已经定义的结构类型 如:例1代码中的结构类型 std info,其数据项 “ birthday”就是一个已经定义的日期结构 类型date。 2021/2/24 6
2021/2/24 6 注:(1)“结构类型名”和“数据项”的命名规则 ,与变量名相同。 (2)数据类型相同的数据项,既可逐个、逐行 分别定义,也可合并成一行定义。 如:例1中score类型也可改为如下形式: struct score//成绩结构类型和三门共4项组成 {char no[7]; //学号 int score1,score2,score3; //三门成绩 }; (3)结构类型中的数据项,既可以是基本数据 类型,也允许是另一个已经定义的结构类型。 如:例1代码中的结构类型std_info,其数据项 “birthday”就是一个已经定义的日期结构 类型date
(4)定义结构体的成员时,不能指定成员的存储 类为auto、 register、 extern,这是由于系统不为 结构体类型分配任何存储空间,但可以指定成员 的存储类型为 static 如: struct test auto int i, /不正确,不能指定自动存储类型 register int x 不正确,不能指定为寄存器存储类型 extern int f ∥不正确,不能指定为外部存储类型 static int y; ∥正确,可指定为静态存储类型 2021/224
2021/2/24 7 (4)定义结构体的成员时,不能指定成员的存储 类为auto、register、extern,这是由于系统不为 结构体类型分配任何存储空间,但可以指定成员 的存储类型为static。 如:struct test{ auto int i,j; //不正确,不能指定自动存储类型 register int x; //不正确,不能指定为寄存器存储类型 extern int f; //不正确,不能指定为外部存储类型 static int y; //正确,可指定为静态存储类型 };
定义结构体类型变量 可有三种方法定义结构体类型变量: 1.先定义结构,再说明结构变量。如: struct stu int num. char name 20 char sex: float score struct stu boyl,boy2;∥说明变量boy1和boy2为 u结构类型 2021/224 8
2021/2/24 8 定义结构体类型变量 可有三种方法定义结构体类型变量: 1. 先定义结构,再说明结构变量。如: struct stu{ int num; char name[20]; char sex; float score; }; struct stu boy1,boy2; //说明变量boy1和boy2为 stu结构类型
也可以用宏定义使一个符号常量来表示一个结构类 型。如: #define stu struct stu STUR int num char name 201; char sex: float score: STU boyl, boy2 2021/224 9
2021/2/24 9 也可以用宏定义使一个符号常量来表示一个结构类 型。如: #define STU struct stu STU{ int num; char name[20]; char sex; float score; }; STU boy1,boy2;
2.在定义结构类型的同时说明结构变量。如: struct stu int num; char name 201; char sex float score: 3boyl, boy2; 3.直接说明结构变量。如: struct int num char name 201; char sex: float score: 3boyl, boy2; 2021/224 10
2021/2/24 10 2. 在定义结构类型的同时说明结构变量。如: struct stu{ int num; char name[20]; char sex; float score; }boy1,boy2; 3. 直接说明结构变量。如: struct{ int num; char name[20]; char sex; float score; }boy1,boy2;