第9章用户自己建立数据类型 C语言提供了一些系统已定义好的数据 类型,如int, float,char,用户可 以用它们定义变量。 C语言允许用户建立自己的数据类型, 用它来定义变量 >结构体、共用体、枚举、 typedef
第9章 用户自己建立数据类型 ➢C语言提供了一些系统已定义好的数据 类型,如int,float,char,用户可 以用它们定义变量。 ➢C语言允许用户建立自己的数据类型, 用它来定义变量。 ➢结构体、共用体、枚举、typedef
91结构体类型和结构体变量 以前的变量之间是无内在联系的,然而现实中很多 数据是有内在联系的。 >例如,一个学生的学号、姓名、性别、年龄、成绩、 家庭地址等项,是属于同一个学生。 >是否可以组合成为一个组合数据?如定义一个名为 student1的变量,在这个变量中包括学生1的 学号、姓名、性别、年龄、成绩、家庭地址等项
9.1 结构体类型和结构体变量 ➢ 以前的变量之间是无内在联系的,然而现实中很多 数据是有内在联系的。 ➢ 例如,一个学生的学号、姓名、性别、年龄、成绩、 家庭地址等项,是属于同一个学生。 ➢ 是否可以组合成为一个组合数据?如定义一个名为 student_1的变量,在这个变量中包括学生1的 学号、姓名、性别、年龄、成绩、家庭地址等项
>由用户自己建立由不同类型数据组成的 组合型的数据结构,称为结构体 ( structure)。 >问题:用数组不可以吗?
➢由用户自己建立由不同类型数据组成的 组合型的数据结构,称为结构体 (structure)。 ➢问题:用数组不可以吗?
struct student ◆声明一个结构体类型 d int num; struct Student char name20];◆ struct是关键字 char sex ◆它包括 int age num,name, sex, age, float score: score addr等不同类 char addr[30]; 型的成员 ;
struct Student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; ◆声明一个结构体类型 struct Student ◆struct是关键字 ◆它包括 num,name,sex,age, score,addr等不同类 型的成员
>声明一个结构体类型的一般形式为: struct结构体名 {成员表列}; 类型名成员名;
➢声明一个结构体类型的一般形式为: struct 结构体名 { 成员表列 }; 类型名 成员名;
说明: (1)结构体类型并非只有一种,而是可以设 计出许多种结构体类型,例如 struct Teacher struct worker struct date ◆各自包含不同的成员
➢说明: (1)结构体类型并非只有一种,而是可以设 计出许多种结构体类型,例如 struct Teacher struct Worker struct Date ◆各自包含不同的成员
(2)成员可以属于另一个结构体类型。 struct date t int month; int dayi int yearr struct stu int num; char name[20]; char sex; int age; struct Date birthdayi char addr[301; ;
(2) 成员可以属于另一个结构体类型。 struct Date { int month; int day; int year; }; struct Stu { int num; char name[20]; char sex; int age; struct Date birthday; char addr[30]; };
birthday num name sex age month day year ddr
num name sex age birthday addr month day year
1.有了结构体类型,就可以用它定义变量 结构体类型 struct student,可以用来 定义变量: struct student student 1, student 2: 结构体类型名结构体变量名
结构体类型struct Student,可以用来 定义变量: struct Student student1,student2; 结构体类型名 结构体变量名 1.有了结构体类型,就可以用它定义变量
struct Student student1 student2, student1 10001Zhang XinM 1990.5 Shanghai student2 10002 Wang Li F 20 98 Beijing
struct Student student1,student2; 10001 Zhang Xin M 19 90.5 Shanghai student1 10002 Wang Li F 20 98 Beijing student2