第9章结构体 Advanced Programming
Advanced Programming 第9章 结构体
目录 √定义结构体类型变量的方法 结构体变量的引用 √结构体变量的初始化 √结构体数组 指向结构体类型数据的指钋 用指针处理链表 用 typedef定义类型 Advanced Programming
Advanced Programming 目 录 ✓ 定义结构体类型变量的方法 ✓ 结构体变量的引用 ✓ 结构体变量的初始化 ✓ 结构体数组 ✓ 指向结构体类型数据的指针 ✓ 用指针处理链表 ✓ 用typedef定义类型
本章学习目标 ◆理解结构体的概念和它对于编程的重要性 ◆理解定义结构体类型和定义结构体变量的 区别; ◆能够用“.”和“>”分量运算符操作结构体 变量和指向结构体的指针变量 ◆能够定义并使用结构体数组; ◆了解用 Typedef定义数据类型 Advanced Programming
Advanced Programming 本章学习目标 ◆理解结构体的概念和它对于编程的重要性; ◆理解定义结构体类型和定义结构体变量的 区别; ◆能够用“ . ”和“->”分量运算符操作结构体 变量和指向结构体的指针变量; ◆能够定义并使用结构体数组; ◆了解用typedef定义数据类型
§91定义和使用结构体变量 有些问题仅用基本类型和数组来描述,无法反映其内 在联系,如学生情况: num name seX age score addr 11001 Zhang xin m 1996. 5 Shang hai 12001 Wang 20 98.5 Bei jing 由不同类型数据组成的这种数据结构称为结构体 (structure Advanced Programming
Advanced Programming § 9.1 定义和使用结构体变量 有些问题仅用基本类型和数组来描述,无法反映其内 在联系,如学生情况: num name sex age score addr 11001 Zhang xin m 19 96. 5 Shang hai 12001 Wang li f 20 98. 5 Bei jing 由不同类型数据组成的这种数据结构称为结构体 (structure)
1、结构体 ◇结构体是一种构造数据类型。 ◆定义:由相互关联的不同数据类型的数据组成的 有机整体。 B≌行的散据结构提供7 注意:这只是声明种数同类理的合法标识符 据类型并没有定义变量。 可省:无名结构体 ★结构体类型定义 struct结构体名 类型标识符成员名1 struct是关键字,类型标识符成员名2; 不能省略 成员类型可以是 不能省略 x0基本型或构造型
Advanced Programming 1、结构体 ❖结构体是一种构造数据类型。 ❖定义:由相互关联的不同数据类型的数据组成的 有机整体。 ❖用途:为处理复杂的数据结构提供了手段。 为函数间传递不同类型的参数提供了便利。 ❖关键字:struct 结构体类型定义 struct [结构体名] { 类型标识符 成员名1; 类型标识符 成员名2; ……………. }; 成员类型可以是 基本型或构造型 struct是关键字, 不能省略 合法标识符 可省:无名结构体 ;不能省略 注意:这只是声明一种数 据类型并没有定义变量
num 2字节 struct student f int num; name 20字节 char name 201; sex 1字节 char sex; age 2字节 int age: float score, scores 4字节 char addr 301; addr 30字节 ④结构体类型定义仅描述结构体的组成不分配内存空间 Advanced Programming
Advanced Programming struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; name num sex age score addr 2字节 2字节 20字节 1字节 4字节 30字节 … ….. 结构体类型定义仅描述结构体的组成,不分配内存空间
2、定义结构体类型变量的方法(3种 (1)先声明结构体类型,再定义结构体变量 定义结构体 struct结构体名 struct student 类型 类型标识符成员名; f int num; 类型标识符成员名; char name 201; char sex: Int age; struct结构体名变量名表列 float score; char addr30li struct student stul stu2 ■口■■■ 定义结构体变量 Advanced Programming
Advanced Programming 2、定义结构体类型变量的方法(3种) (1)先声明结构体类型,再定义结构体变量 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; struct student stu1,stu2; 定义结构体 类型 定义结构体变量 struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; struct 结构体名 变量名表列;
(2)声明结构体类型的同时定义结构体变量 struct student struct结构体名 f int num; 类型标识符成员名 char name 201 类型标识符成员名 char sex: 00。 nt age 变量名表列 float score char addr 301; 定义结构体类型 stul, stu2 i ④只有在定义了结构 定义结构体变量 体变量后系统才为 其分配内存。 Advanced Programming
Advanced Programming (2)声明结构体类型的同时定义结构体变量 只有在定义了结构 体变量后系统才为 其分配内存。 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; } stu1,stu2 ; 定义结构体类型 定义结构体变量 struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列;
(3)直接定义结构体类型变量 struct struct int num: 类型标识符成员名 char name 201; 类型标识符成员名 char sex: nt age 变量名表列; fle loat scores char addr 301; 3 stul, stu2 用无名结构体直接 定义变量只能一次 Advanced Programming
Advanced Programming (3)直接定义结构体类型变量 用无名结构体直接 定义变量只能一次 struct { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列; struct { int num; char name[20]; char sex; int age; float score; char addr[30]; } stu1,stu2 ;
◆说明 ◇结构体类型与结构体变量概念不同 ●类型不分配内存; 变量分配内存 ●类型不能赋值、存取、运算;变量:可以 ◇结构体变量中的成员可单独使用,方法如普通变量 ◇结构体可嵌套 struct student i int num char name 201; birthday num name struct date month day year i int month printf ("od", sizeof(stu)); Int day; 结果:28 int year, birthdays
Advanced Programming ◆说明 ❖结构体类型与结构体变量概念不同 ⚫类型:不分配内存; 变量:分配内存 ⚫类型:不能赋值、存取、运算; 变量:可以 ❖结构体变量中的成员可单独使用,方法如普通变量; ❖结构体可嵌套 struct date { int month; int day; int year; }; struct student { int num; char name[20]; struct date birthday; }stu; num name birthday month day year printf ("%d ", sizeof (stu) ); struct student { int num; char name[20]; struct date { int month; int day; int year; }birthday; }stu; 结果:28