第九章系统安全性 第九章系统安全性 91结构体 9,2结构体型数组 93结构体型指针 94内存的动态分配 95共用体 9.6位段 97用 typedef定义类型 BACK
第九章 系 统 安 全 性 第九章 系 统 安 全 性 9.1 结构体 9.2 结构体型数组 9.3 结构体型指针 9.4 9.5 共用体 9.6 位段 9.7 用typedef定义类型
第九章系统安全性 91结构体 911结构体类型 数组将若干具有共同类型特征的数据组合在了一起。然 而,在实际处理中,待处理的信息往往是由多种类型组成的, 如有关学生的数据,不仅有学习成绩,还应包括诸如学号 (长整型)、姓名(字符串类型)、性别(字符型)、出生 日期(字符串型)等。再如编写工人管理程序时,所处理对 象—工人的信息类似于学生,只是将学习成绩换成工资。就 目前所学知识,我们只能将各个项定义成互相独立的简单变 量或数组,无法反映它们之间的内在联系。应该有一种新的 类型,就像数组将多个同类型数据组合在一起一样,能将这 些具有内在联系的不同类型的数据组合在一起,C语言提供 手“梅纯”类型来完成这二任务
第九章 系 统 安 全 性 9.1 结 构 体 9.1.1 结构体类型 数组将若干具有共同类型特征的数据组合在了一起。然 而,在实际处理中,待处理的信息往往是由多种类型组成的, 如有关学生的数据,不仅有学习成绩, 还应包括诸如学号 (长整型)、姓名(字符串类型)、性别(字符型)、出生 日期(字符串型)等。 再如编写工人管理程序时,所处理对 象——工人的信息类似于学生,只是将学习成绩换成工资。就 目前所学知识,我们只能将各个项定义成互相独立的简单变 量或数组,无法反映它们之间的内在联系。应该有一种新的 类型, 就像数组将多个同类型数据组合在一起一样, 能将这 些具有内在联系的不同类型的数据组合在一起,C语言提供 了“结构体”类型来完成这一任务
第九章系统安全性 912结构体类型的定义 结构体类型的定义形式如下 struct结构体类型名 成员列表} 例如: struct student flong int num; char name [20] char sex, Int age
第九章 系 统 安 全 性 9.1.2 结构体类型的定义 结构体类型的定义形式如下: struct 结构体类型名 {成员列表}; 例如: struct student {long int num; char name[20]; char sex; int age; };
第九章系统安全性 说明 (1)关键字 struct和结构体类型名 student组合成一种类 型标识符,其地位如同通常的int,char等,其用途是用 来定义该结构体型变量,定义了变量之后,该变量就可以 像其它变量一样的使用了,类型名便不应再在程序中出现 (求长度运算除外,一般程序只对变量操作)。类型名 的起名规则遵从标识符
第九章 系 统 安 全 性 说明: (1) 关键字struct和结构体类型名student组合成一种类 型标识符, 其地位如同通常的int ,char 等,其用途是用 来定义该结构体型变量,定义了变量之后,该变量就可以 像其它变量一样的使用了,类型名便不应再在程序中出现 (求长度运算除外,一般程序只对变量操作)。 类型名 的起名规则遵从标识符
第九章系统安全性 (2)成员列表为本结构体类型所包含的若干个成员的列表, 必需用{}括起来,并以分号结束。每个成员的形式为类 型标识符成员名; 如例中的 long int num char name[20];等 成员(如num)又可称为成员变量,也是一种标识符, 成员的类型可以是除该结构体类型自身外,C语言允许的任何 数据类型,结构体类型 struct student中学号num是长整型姓名 name是字符数组、性别sex是字符型等等。成员之一还可以是 其它结构体类型,此时称为结构体类型嵌套,如用生日代替 上例中的年龄。可以定义结构体类型如下:
第九章 系 统 安 全 性 (2) 成员列表为本结构体类型所包含的若干个成员的列表, 必需用{ }括起来,并以分号结束。每个成员的形式为 类 型标识符 成员名; 如例中的 long int num; char name[20]; 等 成员(如num)又可称为成员变量,也是一种标识符, 成员的类型可以是除该结构体类型自身外,C语言允许的任何 数据类型,结构体类型struct student中学号num是长整型 姓名 name是字符数组、性别sex是字符型等等。成员之一还可以是 其它结构体类型,此时称为结构体类型嵌套,如用生日代替 上例中的年龄。可以定义结构体类型如下:
第九章系统安全性 struct date i int year int month int day struct student 1 f long int num char name [20 1 char seX struct date birthda struct studentI ps
第九章 系 统 安 全 性 struct date { int year; int month; int day; }; struct student1 { long int num; char name[20]; char sex; struct date birthday; struct studentl *ps; };
第九章系统安全性 913结构体型变量的定义 形式一,类型、变量分别定义: struct staff char name[20];/*姓名* char department[20];/*部门* Int salary /*工资* int cost /*扣款* Int realsum; /*实发工资* struct staff worker 1, worker 2
第九章 系 统 安 全 性 9.1.3 结构体型变量的定义 形式一, 类型、 变量分别定义: struct staff { char name[20]; /* 姓名 */ char department[20]; /* 部门 */ int salary; /* 工资 */ int cost; /* 扣款 */ int realsum; /* 实发工资 */ }; struct staff worker1, worker2;
第九章系统安全性 形式二,类型、变量一起定义: struct staff i char name [20] char department [20] int salar Int cost int realsum 3 worker1, worker 2
第九章 系 统 安 全 性 形式二, 类型、 变量一起定义: struct staff { char name[20]; char department[20]; int salary; int cost; int realsum; } worker1, worker2;
第九章系统安全性 形式三是形式二的简化,省略类型名: struct i char name [20] char department [20 Int salary; Int cost int realsum 3 workerI, worker
第九章 系 统 安 全 性 形式三是形式二的简化, 省略类型名: struct { char name[20]; char department[20]; int salary; int cost; int realsum; } worker1, worker2;
第九章系统安全性 worker char name [20] char department[20] Int salary int cost int realsum &worker char name [20] char department[20] int salary Int cost int realsum 图9绩构体型变量在内存中的存贮形式签密
第九章 系 统 安 全 性 图 9.1 结构体型变量在内存中的存贮形式