弗原創IT教育中心 第5讲结构 为将不同数据类型、但相互关联的一组数 据,组合成一个有机整体使用,C语言提供一种 称为“结构”的数据结构 5.1结构类型与结构变量的定义 5.2结构变量的引用与初始化 5.3结构数组 54指向结构类型数据的指钍 5.5共用型和枚举型
第5讲 结构 为将不同数据类型、但相互关联的一组数 为将不同数据类型、但相互关联的一组数 据,组合成一个有机整体使用, 据,组合成一个有机整体使用,C语言提供一种 称为“结构”的数据结构。 5.1 结构类型与结构变量的定义 结构类型与结构变量的定义 5.2 结构变量的引用与初始化 结构变量的引用与初始化 5.3 结构数组 5.4 指向结构类型数据的指针 指向结构类型数据的指针 5.5 共用型和枚举型 共用型和枚举型
弗原創IT教育中心 5.1结构类型与结构变量的定义 C语言中的结构类型,相当于其它高级语言中的“记录”类 型 51结构类型定义 struct结构类型名/ struct是结构类型关键字* 数据类型数据项 数据类型数据项2; 数据类型数据项n 体*此行分号不能少!* 案例51定义一个反映学生基本情况的结构类型,用以存储学生的 相关信息。 /*功能:定义一个反映学生基本情况的结构类型*/
5.1 结构类型与结构变量的定义 结构类型与结构变量的定义 C语言中的结构类型,相当于其它高级语言中的 语言中的结构类型,相当于其它高级语言中的“记录”类 型。 5.1 结构类型定义 struct 结构类型名 /* struct是结构类型关键字 是结构类型关键字*/ {数据类型 数据项1; 数据类型 数据项2; …… …… 数据类型 数据项n; }; /* 此行分号不能少! 此行分号不能少!*/ [案例5.1] 定义一个反映学生基本情况的结构类型,用以存储学生的 相关信息。 /*功能:定义一个反映学生基本情况的结构类型*/
弗原創IT教育中心 struct date /日期结构类型:由年、月、日三项组成* fint year at month, int day struct std info//学生信息结构类型:由学号、姓名、性别和生日组成 ichar no[7 char name char sex 3; struct date birthday; struct score/*成绩结构类型:由学号和三门成绩共4项组成*/ char no 7; int score 1 int score2 3
struct date /*日期结构类型:由年、月、日三项组成*/ {int year; int month; int day; }; struct std_info std_info //学生信息结构类型:由学号、姓名、性别和生日组成 {char no[7]; {char no[7]; char name[9]; char name[9]; char sex[3]; char sex[3]; struct date birthday; date birthday; }; struct score /*成绩结构类型:由学号和三门成绩共4项组成*/ {char no[7]; {char no[7]; int score1; int score2; int score3; };
弗原創IT教育中心 (1)“结构类型名”和“数据项”的命名规则,与变量名 相同。 (2)数据类型相同的数据项,既可逐个、逐行分别 定义,也可合并成一行定义。 例如,本案例代码中的日期结构类型,也可改为如下 形式 struct date fint year, month, day; (3)结构类型中的数据项,既可以是基本数据类 型,也允许是另一个已经定义的结构类型。 例如,本案例代码中的结构类型 std info,其数据项 birthday就是一个已经定义的日期结构类型date
(1)“结构类型名”和“数据项”的命名规则,与变量名 的命名规则,与变量名 相同。 (2)数据类型相同的数据项,既可逐个、逐行分别 )数据类型相同的数据项,既可逐个、逐行分别 定义,也可合并成一行定义。 定义,也可合并成一行定义。 例如,本案例代码中的日期结构类型 例如,本案例代码中的日期结构类型,也可改为如下 ,也可改为如下 形式: struct date {int year, month, day; year, month, day; }; (3)结构类型中的数据项,既可以是基本数据类 结构类型中的数据项,既可以是基本数据类 型,也允许是另一个已经定义的结构类型。 型,也允许是另一个已经定义的结构类型。 例如,本案例代码中的结构类型 例如,本案例代码中的结构类型std_info std_info,其数据项 “birthday birthday”就是一个已经定义的日期结构类型 就是一个已经定义的日期结构类型date
弗原創IT教育中心 52结构变量定义 用户自己定义的结构类型,与系统定义的标准类型 int、char等)一样,可用来定义结构变量的类型 1定义结构变量的方法,可概括为两种 (1)同接定义法一先定义结构类型、再定义结构 变量 例如,利用[案例5.1中定义的学生信息结构类型 std info,定义了一个相应的结构变量 student: struct std into student 结构变量 student:拥有结构类型的全部成员,其中 birthday成员是一个日期结构类型,它又由3个成员构成 注意:使用间接定义法定义结构变量时,必须同时 指定结构类型名
5.2 结构变量定义 用户自己定义的结构类型,与系统定义的标准类型 己定义的结构类型,与系统定义的标准类型 (int、char等)一样,可用来定义结构变量的类型。 等)一样,可用来定义结构变量的类型。 1.定义结构变量的方法,可概括为两种: 定义结构变量的方法,可概括为两种: (1)间接定义法──先定义结构类型、再定义结构 先定义结构类型、再定义结构 变量 例如,利用[案例5.1]中定义的学生信息结构类型 中定义的学生信息结构类型 std_info std_info,定义了一个相应的结构变量 定义了一个相应的结构变量student student: struct std_info student; std_info student; 结构变量student student:拥有结构类型的全部成员,其中 拥有结构类型的全部成员,其中 birthday birthday成员是一个日期结构类型,它又由 成员是一个日期结构类型,它又由3个成员构成。 注意:使用间接定义法定义结构变量时,必须同时 :使用间接定义法定义结构变量时,必须同时 指定结构类型名。 指定结构类型名