C语言程序设计 结构体和共用体样本教案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相当于建立数据库二维表的表结构.
step2:用所定义的结构类型定义结构变量(记录变量);
相当于为数据库二维表的各记录定义一个记录名.
step3:通过所定义结构变量(记录变量)访问对应记录中的成员.
相当于编辑数据库二维表的记录中的各项.
(1)结构类型的说明:
在Turbo C中, 结构也是一种数据类型,但不同二维表所对应的结构不同,故在使用前需要对结构情况进行说明,即结构类型的说明.
18
88
chengde
如果将num、name、sex、age、score、addr分别定义为互相独立的简单变量,难以反映它们之间的内在联系,如何解决此类问题呢?
一、结构体类型引入
处理这样的二维表数据时,通常以记录为单位进行处理,而每条记录中包含多种数据类型,按以前所讲的数据类型没有办法处理。故引入了结构类型。即将多个基本类型作为一个集体定义成一种新的用户自定义类型。例:
结构类型说明的一般格式为:
比较
举例
struct 结构名
{
类型名1成员变量名1;
类型名2成员变量名2;
...
类型名n成员变量名n;
}
说明:
1)"struct"是关键字,是结构类型的标志;
2)"结构名"是用户所说明的结构类型的名称的标识符,而不是变量名,以后可用它来定义结构变量.
3)"类型名"为以前所讲的各种数据类型(int, char等),也可以是已说明的结构类型。
格式一:先说明结构类型,再单独进行结构变量定义.
例:
struct student
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
};
struct student std,pers[3],*pstd;
说明:这个例子定义了三个结构类型名为student的结构变量:
结构体变量的引用
前面已经介绍了基本数据类型──整型、浮点型、字符型,也介绍了一种构造类型──数组,数组中各元素是属于同一种类型的。
例如:一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,各项的数据类型并不相同(如下图)
num name sex age score addr
10010
Li Fan
m
这种结构类型变量定义的方式与不省略"结构名"的方式相比,不同之处在于:这种格式定义结构变量以后无法再定义此结构类型的其它结构变量,而带有"结构名"的格式则可以.
格式三: 使用typedef说明一个结构类型名,再用新类型名定义结构变量.
例:
typedefstruct
{ char name[12];
char sex;
说明:
如果省略变量名std,pers[3],*pstd, 则变成对结构的说明.
可以省略结构名,用一个无名结构类型直接定义结构类型变量。
例:
struct
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
}std,pers[3],*pstd;
4)"成员变量名"是构成结构的每一个成员变量的名称,相当于数据库二维表中的各字段名.
例1:
struct date
{int year;
int month;
int day;
};
例2:
struct student
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
结构体与共用体第一讲
内容
说明
主要
内容
重点
难点
问题
提出
1.结构体的概念及其基本操作
2.结构体变量的引用方法
3.结构体数组的使用
例子:
int a[5];
通过举例说明定义结构体类型的必要性。
和基本类型变量进行比较分析,进一步说明必须定义结构体类型。
强调
注意与以往变量应用的区别
1.对结构体类型的理解
2.结构体类型的使用
1)结构变量的定义
象其它类型的变量一样,在使用结构变量时要先对其定义。结构变量可以是普通结构变量,结构数组,和结构指针等形式.
定义结构变量有三种格式,现分别举例说明:
先声明一个
Struct date
类型,然后在定义Structstudent类型时,将成员
Birthday定义为Struct date类型。
12个
字节
1个
2个
2个
2个
4个
4个
4个
4个
结构数组变量如:struct student pers[3];
}
在C语言中,结构类型可以嵌套定义,所以以上两例可以合并为:
struct student
{ char name[12];
char sex;
struct date
{ int year;
int month;
int day;
} birthday;
float sc[4];
}
(2)结构变量的定义及结构变量的内存分配:
Structstudent
{intnum;
char name[ຫໍສະໝຸດ Baidu0];
char sex;
int age;
float score;
char addr[30]; };
说明:
1.Struct是一个关键字,标志着这是一个结构体类型。
2.Structstudent是一个类型名。
二、结构类型的使用步骤
step1:说明所定义的结构类型的结构形式,成员构成;
普通结构变量:std;
结构数组变量:pers[3];
指向该结构类型的指针变量:*pstd.
格式二:紧跟在结构类型说明之后进行结构变量定义:
例:
struct student
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
}std,pers[3],*pstd;
sturct date birthday;
float sc[4];
}STD_GRADE;
STD_GRADEstd,pers[3],*pstd;
说明:
这里STD_GRADE为用户定义的一个结构类型的类型名.
因此可用它来定义结构变量,而不再需要关键字sturct了.
结构体数组和数值型数组不同之处在于每个数组元素都是一个结构体类型的数据。
先提示讲解
typedef
注意理解
难点
2)结构变量的内存分配
普通结构变量如:struct student std;
系统为该结构变量分配内存时,所分配的字节数为该结构变量所包含的各个成员变量所占字节数之和,即35个字节.
如下图所示:
Namesexyear month daysc[0]sc[1]sc[2]sc[3]
step2:用所定义的结构类型定义结构变量(记录变量);
相当于为数据库二维表的各记录定义一个记录名.
step3:通过所定义结构变量(记录变量)访问对应记录中的成员.
相当于编辑数据库二维表的记录中的各项.
(1)结构类型的说明:
在Turbo C中, 结构也是一种数据类型,但不同二维表所对应的结构不同,故在使用前需要对结构情况进行说明,即结构类型的说明.
18
88
chengde
如果将num、name、sex、age、score、addr分别定义为互相独立的简单变量,难以反映它们之间的内在联系,如何解决此类问题呢?
一、结构体类型引入
处理这样的二维表数据时,通常以记录为单位进行处理,而每条记录中包含多种数据类型,按以前所讲的数据类型没有办法处理。故引入了结构类型。即将多个基本类型作为一个集体定义成一种新的用户自定义类型。例:
结构类型说明的一般格式为:
比较
举例
struct 结构名
{
类型名1成员变量名1;
类型名2成员变量名2;
...
类型名n成员变量名n;
}
说明:
1)"struct"是关键字,是结构类型的标志;
2)"结构名"是用户所说明的结构类型的名称的标识符,而不是变量名,以后可用它来定义结构变量.
3)"类型名"为以前所讲的各种数据类型(int, char等),也可以是已说明的结构类型。
格式一:先说明结构类型,再单独进行结构变量定义.
例:
struct student
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
};
struct student std,pers[3],*pstd;
说明:这个例子定义了三个结构类型名为student的结构变量:
结构体变量的引用
前面已经介绍了基本数据类型──整型、浮点型、字符型,也介绍了一种构造类型──数组,数组中各元素是属于同一种类型的。
例如:一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,各项的数据类型并不相同(如下图)
num name sex age score addr
10010
Li Fan
m
这种结构类型变量定义的方式与不省略"结构名"的方式相比,不同之处在于:这种格式定义结构变量以后无法再定义此结构类型的其它结构变量,而带有"结构名"的格式则可以.
格式三: 使用typedef说明一个结构类型名,再用新类型名定义结构变量.
例:
typedefstruct
{ char name[12];
char sex;
说明:
如果省略变量名std,pers[3],*pstd, 则变成对结构的说明.
可以省略结构名,用一个无名结构类型直接定义结构类型变量。
例:
struct
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
}std,pers[3],*pstd;
4)"成员变量名"是构成结构的每一个成员变量的名称,相当于数据库二维表中的各字段名.
例1:
struct date
{int year;
int month;
int day;
};
例2:
struct student
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
结构体与共用体第一讲
内容
说明
主要
内容
重点
难点
问题
提出
1.结构体的概念及其基本操作
2.结构体变量的引用方法
3.结构体数组的使用
例子:
int a[5];
通过举例说明定义结构体类型的必要性。
和基本类型变量进行比较分析,进一步说明必须定义结构体类型。
强调
注意与以往变量应用的区别
1.对结构体类型的理解
2.结构体类型的使用
1)结构变量的定义
象其它类型的变量一样,在使用结构变量时要先对其定义。结构变量可以是普通结构变量,结构数组,和结构指针等形式.
定义结构变量有三种格式,现分别举例说明:
先声明一个
Struct date
类型,然后在定义Structstudent类型时,将成员
Birthday定义为Struct date类型。
12个
字节
1个
2个
2个
2个
4个
4个
4个
4个
结构数组变量如:struct student pers[3];
}
在C语言中,结构类型可以嵌套定义,所以以上两例可以合并为:
struct student
{ char name[12];
char sex;
struct date
{ int year;
int month;
int day;
} birthday;
float sc[4];
}
(2)结构变量的定义及结构变量的内存分配:
Structstudent
{intnum;
char name[ຫໍສະໝຸດ Baidu0];
char sex;
int age;
float score;
char addr[30]; };
说明:
1.Struct是一个关键字,标志着这是一个结构体类型。
2.Structstudent是一个类型名。
二、结构类型的使用步骤
step1:说明所定义的结构类型的结构形式,成员构成;
普通结构变量:std;
结构数组变量:pers[3];
指向该结构类型的指针变量:*pstd.
格式二:紧跟在结构类型说明之后进行结构变量定义:
例:
struct student
{ char name[12];
char sex;
sturct date birthday;
float sc[4];
}std,pers[3],*pstd;
sturct date birthday;
float sc[4];
}STD_GRADE;
STD_GRADEstd,pers[3],*pstd;
说明:
这里STD_GRADE为用户定义的一个结构类型的类型名.
因此可用它来定义结构变量,而不再需要关键字sturct了.
结构体数组和数值型数组不同之处在于每个数组元素都是一个结构体类型的数据。
先提示讲解
typedef
注意理解
难点
2)结构变量的内存分配
普通结构变量如:struct student std;
系统为该结构变量分配内存时,所分配的字节数为该结构变量所包含的各个成员变量所占字节数之和,即35个字节.
如下图所示:
Namesexyear month daysc[0]sc[1]sc[2]sc[3]