- 2
- 0
- 约4.87千字
- 约 42页
- 2017-02-12 发布于重庆
- 举报
09(C语言课件)-构造数据类型
一种自定义的数据类型 一、共用体数据类型的特点 与结构体类似之处:由不同的数据项组成一个整体。 与结构体不同之处:占用的内存单元不同。 9.4 联合体数据类型 * * 第9章 构造数据类型 ? 已了解的数据类型: 整型 浮点型 字符型 数组 简单数据类型 用户定义的数据类型 特点:所有的元素都是同一种类型 存在的问题:难以处理较复杂的数据 如:建立一份学生档案,对每一个学生至少需要以下一些信息 学号(unsigned num) 姓名(char name[20]) 性别(char sex) 年龄(int age) 成绩(float score) 地址(char addr[30]) 9.1.1 结构体的类型定义 C程序可将上述数据的集合定义为一种结构体类型: struct student { unsigned num; char name[20]; char sex; int age; float score; char addr[30]; }; 上述定义中: struct ––– 关键词(保留字), 表示定义一种结构体类型。 student –––结构体名, 相当于类型名(int, float等) 其一般形式: struct 结构体名 {成员表列}; 成员表列:类型标识符 成员名 以上仅说明了定义一种类型的方法,尚未定义变量。 9.1.2 结构体类型变量的定义 一、先定义结构体类型再定义结构体变量 三种方法: 则 x1, x2为student 型变量,x1, x2可存放student数据。 struct student x1, x2; 类型标识符 例: 二、在定义结构体类型的同时定义变量 例:struct student { int num; char name[20]; char sex; int age; char addr[30]; } x1, x2; { 成员表列 } 变量名表列; 定义形式 struct 结构体名 三、直接定义结构类型变量 定义形式 struct {成员表列} 变量名表列; 不出现结构体类型名 如:struct { int num; char name[20]; char sex; int age; char addr[30]; } x1, x2; 1. 类型名与变量名是不同的概念 3. 每一个成员的作用如同该类型的变量 4. 成员名与程序中的变量名可相同但意义不同 几点说明: 2. 允许成员名为另一个已定义的结构型变量 struct date { int month; int day; int year; }; struct student { int num; char name[20]; char sex; int age; struct date birthday; char addr[30]; } x1, x2; 结构体的嵌套定义 x1 或x2 num name sex age birthday month day year addr 9.1.3 结构体变量的初始化 struct student x1={8906, Li Ming , M, 85.5}; 一、先定义结构,在定义结构变量时对每个成员赋初值 如:struct student { unsigned No; char name[20]; char sex; float score; }; 若 x1 的起始地址为2000,则 x1 在内存中占有的存储单元为: 共用27个字节的连续单元 8906 No 2000 2002 2021 2022 name[20] L i M i n g M 85.5 \0 ? 2023 sex score 2026 struct exp { int a=1234; float b=56.7; char yn[8]=test; } x; 三、结构定义与变量定义及初始化合二为一: struct exp { int a; float b; char yn[8]; } x={1234, 56. 7, test};
原创力文档

文档评论(0)