《结构体和共用体》PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三种形式的定义方法,分别是:
精选课件
8
1. 先声明结构体类型再定义结构体变量,一般形式是: struct 结构体名 变量名表;
如
struct student stud1, stud2;
struct date date_1; 定义了3个结构体类型的变量stud1,stud2和date_1, 前两个是struct student类型的结构体变量,后者是 struct date类型结构体变量。
如前例在结构体类型struct student下定义的两个变量 stud1, stud2,二变量中的每个成员均可引用,且所引用 的成员变量与其所属类型的普通变量一样可进行该类型所允 许的任何运算。
精选课件
12
例如:
aver=(stud1.score[0]+ stud1.score[1]+ stud1.score[2])/3; strcpy(stud2.name,"Wang zhe"); stud2.score[1]= stud1.score[1]; n=dd.year-date_1.year; date_1.year++; day=stud3.birthday.day--; scanf("%s %c %f",stud1.name, &studl.sex,&stud1.score[1]); printf("%d %d %d\n",dd.year,dd.month,dd.day);
一个有机的整体。这些组合在一个整体中的数据是互相联系的。例如,
要描述一个学生的结相构关体信息是: 一种构造数据类型, 其用途是把不同类型的数据组
num
name合成一sex个b整irt体hd,ay 当s作co一re 个新的 tel
04010538 Liu li数hu据a 类F 型8来3/使05用/28。80.5 78 90.5 85583173
struct date
{ int year;
int month;
int day;
};
则结构体类型struct student中的成员birthday就可定
义为
struct date birthday;
这样birthday是结构体类型struct date的变量。
精选课件
7
7.1.2 结构体类型变量的定义
定义了2个结构体类型的变量stud3,stud4。
精选课件
11
7.1.3 结构体类型变量及其成员的引用
由于结构体类型的变量是一种构造类型的变量,可引 用的对象有两个:变量名代表变量的整体,成员名代表变 量的各个成员,二者均可在程序中引用。引用时注意以下 规则:
1.变量成员的引用方法(成员运算符“.”):
精选课件
2
7.1 结构体类型和结 构体类型变量
7.1.1 结构体类型及其定义 7.1.2 结构体类型变量的定义 7.1.3 结构体类型变量及其成员的引用 7.1.4 结构体变量的初始化
精选课件
3
7.1.1 结构体类型及其定义
数组属于构造类型,数组中的各元素必须属于同一个数据类型。
但是在实际生活中,我们经常会遇到有若干各不同类型的数据组合成
C语言允许用户自己指定这样一种包含若干个类型不同(当然也可以相同) 的数据项的数据结构,它称为结构体(structure)。组成结构体的数据项成为 结构体成员。在其他高级语言中称其为“记录”。
精选课件
4
声明结构体类型时所 在C语言中,用如下方式定义 必须使用的关键字
struct student
{char num[10]; char name[20];
精选课件
9
2. 在声明结构体类型的同时定义变量,一般形式是: struct 结构体名 { 成员表列 }变量名表;
如: struct date { int year; int month; int day; } date_2,dd;
同样可定义date_2,dd为struct date类型的变量。
精选课件
第7章 结构体与共用体
本章学习C语言的三种数据类型(构造类型):
结构体类型,共用体类型,枚举类型。
精选课件
1
第7章 结构体与共用体
7.1 结构体类型和结构体类型变量
7.2 结构体数组 7.3 指向结构体类型数据的指针 7.4 内存的动态分配与单链表
7.5 共用体 7.6 位段 7.7 枚举类型 7.8 typedef语句
10
3. 直接定义结构体类型变量,其一般形式为:
struct
{
成员表列;
}变量名表;
即不出现结构体名。如
struct
{char num[10];
char name[20];
char sex;
struct date birthday;
float score[3];
char tel[12];
}stud3,stud4;
printf("%s%s%c%f%f%f%s",stud2); 是错误的。
结构体类型的名称
char sex;
结构体成员列表,
char birth在dasytr[u8c];t studen包t括类每型个起结作构用体的成范围内, float scorest[r3u]c;t student员和的系类统型提及供名的称标准类型
char tel[1(2如];int、char、float、double等)一样具
精选课件
13
在C语言的运算符中,取成员运算符“.”优先级最高, 故以上语句均为对引用之后的成员变量进行操作。若结构体 定义是嵌套的,则只能引用最低级的成员(用若干“.”运 算符,逐级引用到最低级)。如
stud3.birthday.year 是合法的,而
stud3.yearwk.baidu.com是非法的。
精选课件
14
2. 结构体类型变量可以整体引用来赋值。如stud2= stud1;即将变量stud1的所有成员的值一一赋给变量 stud2的各成员。结构体型变量只能对逐个成员进行输入或 输出,不可进行整体的输入输出,如:
};
有同样的地位和作分用号,不都可可少以用来定义变
量的类型。
精选课件
5
定义一个结构体类型的一般形式为: struct 结构体名
{ 类型标识符 成员1; 类型标识符 成员2; … 类型标识符 成员n;
};
成员的类型可为除该结构体类型外的任何一种类型,如 基本类型、指针类型和结构体类型。
精选课件
6
若定义结构体类型struct date如下:
精选课件
8
1. 先声明结构体类型再定义结构体变量,一般形式是: struct 结构体名 变量名表;
如
struct student stud1, stud2;
struct date date_1; 定义了3个结构体类型的变量stud1,stud2和date_1, 前两个是struct student类型的结构体变量,后者是 struct date类型结构体变量。
如前例在结构体类型struct student下定义的两个变量 stud1, stud2,二变量中的每个成员均可引用,且所引用 的成员变量与其所属类型的普通变量一样可进行该类型所允 许的任何运算。
精选课件
12
例如:
aver=(stud1.score[0]+ stud1.score[1]+ stud1.score[2])/3; strcpy(stud2.name,"Wang zhe"); stud2.score[1]= stud1.score[1]; n=dd.year-date_1.year; date_1.year++; day=stud3.birthday.day--; scanf("%s %c %f",stud1.name, &studl.sex,&stud1.score[1]); printf("%d %d %d\n",dd.year,dd.month,dd.day);
一个有机的整体。这些组合在一个整体中的数据是互相联系的。例如,
要描述一个学生的结相构关体信息是: 一种构造数据类型, 其用途是把不同类型的数据组
num
name合成一sex个b整irt体hd,ay 当s作co一re 个新的 tel
04010538 Liu li数hu据a 类F 型8来3/使05用/28。80.5 78 90.5 85583173
struct date
{ int year;
int month;
int day;
};
则结构体类型struct student中的成员birthday就可定
义为
struct date birthday;
这样birthday是结构体类型struct date的变量。
精选课件
7
7.1.2 结构体类型变量的定义
定义了2个结构体类型的变量stud3,stud4。
精选课件
11
7.1.3 结构体类型变量及其成员的引用
由于结构体类型的变量是一种构造类型的变量,可引 用的对象有两个:变量名代表变量的整体,成员名代表变 量的各个成员,二者均可在程序中引用。引用时注意以下 规则:
1.变量成员的引用方法(成员运算符“.”):
精选课件
2
7.1 结构体类型和结 构体类型变量
7.1.1 结构体类型及其定义 7.1.2 结构体类型变量的定义 7.1.3 结构体类型变量及其成员的引用 7.1.4 结构体变量的初始化
精选课件
3
7.1.1 结构体类型及其定义
数组属于构造类型,数组中的各元素必须属于同一个数据类型。
但是在实际生活中,我们经常会遇到有若干各不同类型的数据组合成
C语言允许用户自己指定这样一种包含若干个类型不同(当然也可以相同) 的数据项的数据结构,它称为结构体(structure)。组成结构体的数据项成为 结构体成员。在其他高级语言中称其为“记录”。
精选课件
4
声明结构体类型时所 在C语言中,用如下方式定义 必须使用的关键字
struct student
{char num[10]; char name[20];
精选课件
9
2. 在声明结构体类型的同时定义变量,一般形式是: struct 结构体名 { 成员表列 }变量名表;
如: struct date { int year; int month; int day; } date_2,dd;
同样可定义date_2,dd为struct date类型的变量。
精选课件
第7章 结构体与共用体
本章学习C语言的三种数据类型(构造类型):
结构体类型,共用体类型,枚举类型。
精选课件
1
第7章 结构体与共用体
7.1 结构体类型和结构体类型变量
7.2 结构体数组 7.3 指向结构体类型数据的指针 7.4 内存的动态分配与单链表
7.5 共用体 7.6 位段 7.7 枚举类型 7.8 typedef语句
10
3. 直接定义结构体类型变量,其一般形式为:
struct
{
成员表列;
}变量名表;
即不出现结构体名。如
struct
{char num[10];
char name[20];
char sex;
struct date birthday;
float score[3];
char tel[12];
}stud3,stud4;
printf("%s%s%c%f%f%f%s",stud2); 是错误的。
结构体类型的名称
char sex;
结构体成员列表,
char birth在dasytr[u8c];t studen包t括类每型个起结作构用体的成范围内, float scorest[r3u]c;t student员和的系类统型提及供名的称标准类型
char tel[1(2如];int、char、float、double等)一样具
精选课件
13
在C语言的运算符中,取成员运算符“.”优先级最高, 故以上语句均为对引用之后的成员变量进行操作。若结构体 定义是嵌套的,则只能引用最低级的成员(用若干“.”运 算符,逐级引用到最低级)。如
stud3.birthday.year 是合法的,而
stud3.yearwk.baidu.com是非法的。
精选课件
14
2. 结构体类型变量可以整体引用来赋值。如stud2= stud1;即将变量stud1的所有成员的值一一赋给变量 stud2的各成员。结构体型变量只能对逐个成员进行输入或 输出,不可进行整体的输入输出,如:
};
有同样的地位和作分用号,不都可可少以用来定义变
量的类型。
精选课件
5
定义一个结构体类型的一般形式为: struct 结构体名
{ 类型标识符 成员1; 类型标识符 成员2; … 类型标识符 成员n;
};
成员的类型可为除该结构体类型外的任何一种类型,如 基本类型、指针类型和结构体类型。
精选课件
6
若定义结构体类型struct date如下: