第7章数据的链式存储及应用 为将不同数据类型、但相互关联的一组数据,组合 成一个有机整体使用,C语言提供一种称为“结构体” 的数据类型。 71结构体类型与结构体变量的定义 72结构体变量的引用与初始化 73结构体数组 74指向结构体类型数据的指针 75线性表的链式存储结构及运算 76共用型和枚举型 77定义已有类型的别名 下一章 返回目录
返回本章首页 下一页 上一页 第7章 数据的链式存储及应用 为将不同数据类型、但相互关联的一组数据,组合 成一个有机整体使用,C语言提供一种称为“结构体” 的数据类型。 7.1 结构体类型与结构体变量的定义 7.2 结构体变量的引用与初始化 7.3 结构体数组 7.4 指向结构体类型数据的指针 7.5 线性表的链式存储结构及运算 7.6 共用型和枚举型 7.7 定义已有类型的别名 返回目录 上一章 下一章
7.1结构体类型与结构体变量的定义 C语言中的结构体类型,相当于其它高级语言中的“记 录”类型 结构体类型定义 struct结构体类型名/* struct是结构体类型关键字* 数据类型数据项1; 数据类型数据项2 数据类型数据项n; /*此行分号不能少!* 案例7定一个反映学生基本情况的结构类型,用以存储学生的一页 相关信息。 /*案例代码文件名:AL71C。*/ /*功能:定义一个反映学生基本情况的结构翠首剪 下一页
返回本章首页 下一页 上一页 7.1 结构体类型与结构体变量的定义 C语言中的结构体类型,相当于其它高级语言中的“记 录”类型。 一、 结构体类型定义 struct 结构体类型名 /* struct是结构体类型关键字*/ {数据类型 数据项1; 数据类型 数据项2; …… …… 数据类型 数据项n; }; /* 此行分号不能少!*/ [案例7.1] 定义一个反映学生基本情况的结构类型,用以存储学生的 相关信息。 /*案例代码文件名:AL7_1.C。*/ /*功能:定义一个反映学生基本情况的结构体类型*/
struct date /*日期结构体类型:由年、月、日三项组成* iInt year int month int day struct std info/学生信息结构体类型:由学号、姓名、性别和生日共4项组成 ( char no[71 char name[9] char sex: struct date birthday; struct score *成绩结构体类型:由学号和三门成绩共4项组成* ichar no[71 int score l int score2 int score 3 上一页 下一页 返回本章首页
返回本章首页 下一页 上一页 struct date /*日期结构体类型:由年、月、日三项组成*/ {int year; int month; int day; }; struct std_info /*学生信息结构体类型:由学号、姓名、性别和生日共4项组成 */ {char no[7]; char name[9]; char sex[3]; struct date birthday; }; struct score /*成绩结构体类型:由学号和三门成绩共4项组成*/ {char no[7]; int score1; int score2; int score3; };
(1)“结构体类型名”和“数据项”的命名规则, 与变量名相同 (2)数据类型相同的数据项,既可逐个、逐行分别 定义,也可合并成一行定义 例如,本案例代码中的日期结构体类型,也可改为如 下形式: struct date fint year, month, day (3)结构体类型中的数据项,既可以是基本数据类 型,也允许是另一个已经定义的结构体类型 例如,本案例代码中的结构体类型 std info,其数据 项“ birthday就是一个已经定义的日期结构体类型date (4)本书将1个数据项称为结构体类型的1个成员一页 (或分量)。 下一页 返回本章首页
返回本章首页 下一页 上一页 (1)“结构体类型名”和“数据项”的命名规则, 与变量名相同。 (2)数据类型相同的数据项,既可逐个、逐行分别 定义,也可合并成一行定义。 例如,本案例代码中的日期结构体类型,也可改为如 下形式: struct date {int year, month, day; }; (3)结构体类型中的数据项,既可以是基本数据类 型,也允许是另一个已经定义的结构体类型。 例如,本案例代码中的结构体类型std_info,其数据 项“birthday”就是一个已经定义的日期结构体类型date。 (4)本书将1个数据项称为结构体类型的1个成员 (或分量)
二、结构体变量定义 用户自己定义的结构体类型,与系统定义的标准类型 (int、char等)一样,可用来定义结构体变量。 1定义结构体变量的方法,可概括为两种: (1)接定义一先定义结构体类型、再定义结构 体变量 例如,利用[案例71中定义的学生信息结构体类型 std info,定义了一个相应的结构体变量 student: struct std info student 结构体变量 student:拥有结构体类型的全部成员,其 中 birthday成员是一个日期结构体类型,它又由3个成员构 成。 注意:使用间接定义法定义结构体变量时,必须同一页 时指定结构体类型名。 下一页 返回本章首页
返回本章首页 下一页 上一页 二、 结构体变量定义 用户自己定义的结构体类型,与系统定义的标准类型 (int、char等)一样,可用来定义结构体变量。 1.定义结构体变量的方法,可概括为两种: (1)间接定义法──先定义结构体类型、再定义结构 体变量 例如,利用[案例7.1]中定义的学生信息结构体类型 std_info,定义了一个相应的结构体变量student: struct std_info student; 结构体变量student:拥有结构体类型的全部成员,其 中birthday成员是一个日期结构体类型,它又由3个成员构 成。 注意:使用间接定义法定义结构体变量时,必须同 时指定结构体类型名