C程序设计 主讲教师:汪闽 南京师范大学 地图学与地理信息系统04级 专业选修课
C程序设计 南京师范大学 地图学与地理信息系统04级 专业选修课 主讲教师: 汪闽
第十章结构体和共用体 10.1结构体概念 10.2结构体变量的定义 10.3结构体变量的引用 10.4结构体变量的初始化 10.5结构体数组 10.6结构体和指针 107共用体 0.8用 typedef.定义类型 10.9枚举数据类型
10.1 结构体概念 10.2 结构体变量的定义 10.3 结构体变量的引用 10.4 结构体变量的初始化 10.5 结构体数组 10.6 结构体和指针 10.7 共用体 第十章 结构体和共用体 10.8 用typedef定义类型 10.9 枚举数据类型
10.1结构体 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个 整体--自定义数据类型 结构体类型定义 合法标识符 可省:无名结构体 struct[结构体名 类型标识符成员名; 类型标识符成员名 成员类型可以是 struct是关键字, 基本型或构造型 不能省略
10.1 结构体 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个 整体-------自定义数据类型 – 结构体类型定义 struct [结构体名] { 类型标识符 成员名; 类型标识符 成员名; ……………. }; 成员类型可以是 struct是关键字, 基本型或构造型 不能省略 合法标识符 可省:无名结构体
num 2字节 例子图解 name 20字节 例 struct student sex 1字节 int num age 2字节 char name 201 char sex score 4字节 Int age float score char addr 301 30字节 结构体类型定义描述结构 的组织形式不分配内存
例 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字节 … ….. 结构体类型定义描述结构 的组织形式,不分配内存 例子图解
10.2结构体变量的定义 先定义结构体类型,再定义结构体变量 般形式 struct结构体名 类型标识符成员名; 类型标识符成员名 struct结构体名变量名表列
– 先定义结构体类型,再定义结构体变量 • 一般形式: struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; struct 结构体名 变量名表列; 10.2 结构体变量的定义
定义结构体类型的同时定义结构体变量 般形式 struct结构体名 类型标识符成员名 类型标识符成员名; }变量名表列; 例 struct student Int num; char name 201 char sex Int age float score char addr[30] 3stul, Stu2
一般形式: struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列; 例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2; 定义结构体类型的同时定义结构体变量
般形式:直接定义结构体变量 struct 类型标识符成员名 类型标识符成员名; }变量名表列; 例 struct int num 用无名结构体直接定义 char name 201 变量只能一次 char sex Int age float score char addr[30] 3stul, Stu2
一般形式: struct { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列; 例 struct { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2; 用无名结构体直接定义 变量只能一次 直接定义结构体变量
说明: 结构体类型与结构体变量概念不同 类型不分配内存; 变量分配内存 类型不能赋值、存取、运算;变量:可以 结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆
结构体类型与结构体变量概念不同 类型:不分配内存; 变量:分配内存 类型:不能赋值、存取、运算; 变量:可以 结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆 说明:
10.3结构体变量的引用 引用规则 ·结构体变量不能整体引用,只能引用变量成员 引用方式:结构体变量名成员名 成员(分量)运算符 优先级:1 结合性:从左向右 可以将一个结构体变量赋值给另一个结构体变量 结构体嵌套时逐级引用
– 引用规则 • 结构体变量不能整体引用,只能引用变量成员 可以将一个结构体变量赋值给另一个结构体变量 结构体嵌套时逐级引用 成员(分量)运算符 优先级: 1 结合性:从左向右 引用方式: 结构体变量名.成员名 10.3 结构体变量的引用
10.4结构体变量的初始化 形式一: struct结构体名 类型标识符成员名 类型标识符成员名 struct结构体名结构体变量={初始数据}; 例 struct student int num char name 201 char sex: Int age char addr 30 struct student stul=(112,Wang Lin',M,, 19, 200 Beijing Road)
– 形式一: struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; struct 结构体名 结构体变量={初始数据}; 例 struct student { int num; char name[20]; char sex; int age; char addr[30]; }; struct student stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Road”}; 10.4 结构体变量的初始化