好文档 - 专业文书写作范文服务资料分享网站

C语言程序设计 - 结构体和共用体-样本教案

天下 分享 时间: 加入收藏 我要投稿 点赞

C语言程序设计教案

结构体与共用体 第一讲 主要 内容 重点 难点 问题 提出 结构体变量的引用 前面已经介绍了基本数据类型──整型、浮点型、字符型,也介绍了例子: int a[5]; 一种构造类型──数组,数组中各元素是属于同一种类型的。 例如:一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项, 各项的数据类型并不相同(如下图) num name sex age score addr 通过举例说明定义结构10010 Li Fan m 18 88 chengde 如果将num、name、sex、age、score、addr分别定义为互相独立体类型的必要性。 的简单变量,难以反映它们之间的内在联系,如何解决此类问题呢? 一、结构体类型引入 处理这样的二维表数据时,通常以记录为单位进行处理, 而每条记录 中包含多种数据类型,按以前所讲的数据类型没有办法处理。 故引入了 结构类型。即将多个基本类型作为一个集体定义成一种新的用户自定义 类型。例: 和基本类型Struct student 变量进行比{ int num; 较分析,进一步说明必须char name[20]; 定义结构体char sex; 类型。 int age; float score; char addr[30]; }; 说明: 1.Struct 是一个关键字,标志着这是一个结构体类型。 2.Struct student是一个类型名。 二、结构类型的使用步骤 step1:说明所定义的结构类型的结构形式,成员构成; ?相当于建立数据库二维表的表结构. 强调 step2:用所定义的结构类型定义结构变量(记录变量); 注意与以往 ?相当于为数据库二维表的各记录定义一个记录名. 变量应用的 step3:通过所定义结构变量(记录变量)访问对应记录中的成员. 区别 ?相当于编辑数据库二维表的记录中的各项. (1)结构类型的说明: 内容 1.结构体的概念及其基本操作 2.结构体变量的引用方法 3.结构体数组的使用 1.对结构体类型的理解 2.结构体类型的使用 说明 在Turbo C中, 结构也是一种数据类型, 但不同二维表所对应的结构不同,故在使用前需要对结构情况进行说明,即结构类型的说明. 结构类型说明的一般格式为: C语言程序设计教案

比较 举例 说明: 1)\是关键字,是结构类型的标志; 2)\结构名\是用户所说明的结构类型的名称的标识符,而不是变量名,以后可用它来定义结构变量. 3)\类型名\为以前所讲的各种数据类型(int, char等),也可以是已说明的结构类型。 4)\成员变量名\是构成结构的每一个成员变量的名称,相当于数据库二维表中的各字段名. 例1: struct date { int year; int month; int day; }; 例2: struct student { char name[12]; char sex; sturct date birthday; float sc[4]; } 在C语言中,结构类型可以嵌套定义,所以以上两例可以合并为: struct student { char name[12]; char sex; struct date { int year; int month; int day; } birthday; float sc[4]; } (2)结构变量的定义及结构变量的内存分配: 1)结构变量的定义 象其它类型的变量一样, 在使用结构变量时要先对其定义。结构变量可以是普通结构变量,结构数组,和结构指针等形式. 定义结构变量有三种格式,现分别举例说明: struct 结构名 { 类型名1 成员变量名1; 类型名2 成员变量名2; ... 类型名n 成员变量名n; } 先声明一个 Struct date 类型,然后在定义Struct student类型时,将成员 Birthday定义为Struct date类型。

C语言程序设计教案

格式一: 先说明结构类型,再单独进行结构变量定义. 例: struct student { char name[12]; char sex; sturct date birthday; float sc[4]; }; struct student std,pers[3],*pstd; 说明:这个例子定义了三个结构类型名为student的结构变量: 1普通结构变量:std; ○2结构数组变量:pers[3]; ○3指向该结构类型的指针变量:*pstd. ○ 结构体数组和数值型数组不同之处在于每个数组元素都是一个结构体类型的数据。 格式二: 紧跟在结构类型说明之后进行结构变量定义: 例: struct student { char name[12]; char sex; sturct date birthday; float sc[4]; }std,pers[3],*pstd; 说明: 1如果省略变量名std,pers[3],*pstd, 则变成对结构的说明. ○2可以省略结构名,用一个无名结构类型直接定义结构类型变量。 ○ 例: struct { char name[12]; char sex; sturct date birthday; float sc[4]; }std,pers[3],*pstd; 这种结构类型变量定义的方式与不省略\结构名\的方式相比,不同之处在于:这种格式定义结构变量以后无法再定义此结构类型的其它结构变量,而带有\结构名\的格式则可以. 先提示讲解 typedef 格式三: 使用typedef说明一个结构类型名,再用新类型名定义结构变量. 例: typedef struct { char name[12]; char sex; sturct date birthday; float sc[4]; }STD_GRADE; STD_GRADE std,pers[3],*pstd; 说明: 这里STD_GRADE为用户定义的一个结构类型的类型名. 因此可用它来定义结构变量,而不再需要关键字sturct了.

C语言程序设计教案

2)结构变量的内存分配 1普通结构变量 ? 如:struct student std; ○系统为该结构变量分配内存时,所分配的字节数为该结构变量所包含的各个成员变量所占字节数之和,即35个字节. 如下图所示: Name sex year month day sc[0] sc[1] sc[2] sc[3] 12个 字节 1个 2个 2个 2个 4个 4个 4个 4个 2结构数组变量 ? 如:struct student pers[3]; ○ 该结构数组包括3个元素,相当于3个普通结构变量,系统为该结构数组变量分配内存时,分配连续的3个与普通结构变量std所占内存空间大小相等的内存空间. 如下图所示: pers pers[0] pers[1] per[2] 35个字节 35个字节 35个字节 3指向结构类型的指针变量: ○如:struct student *pstd; 系统为该指针变量分配一个存放\地址\的4个字节的内存空间,具体该指针变量指向哪个结构类型变量,通过为该指针变量赋予某结构变量地址值来确定. 如下例: struct student *pstd1,*pstd2,*pstd3; pstd1=&std; /* pstd1指向结构变量std的首地址*/ pstd2=pers; /* pstd2指向结构数组pers的首地址*/ pstd3=(struct student*)malloc(size of (struct student)); 说明: 结构变量名不是指向该结构的地址, 这与数组名的含义不同, 因此若需要求结构中第一个成员的首地址应该是: &[结构变量名] (3)结构变量的初始化 1)给普通结构变量赋初值: 要求: .按结构变量中每个成员在结构体中的顺序一一对应赋初值; .不允许跳过前边的成员给后面的成员赋初值; .可以只给前面的若干个连续的成员赋初值,对于后面未赋初值的成员变量,系统自动赋值.如数值型和字符型的自动赋0. .所赋初值用{}括起. 例: struct student { char name[12]; char sex; sturct date birthday; float sc[4]; }std={\ 2)给结构数组变量赋初值: 要求: 参考数组一章.

注意理解 C语言程序设计教案

例: struct student { char name[12]; char sex; sturct date birthday; float sc[4]; } pers[3]={ {\ {\ {\ }; 有时结构数组长度可以省略,而由初值个数来暗示. (4)结构变量成员的引用和操作: 1)对结构变量成员的引用和操作: 三种引用形式: 1结构体变量名.成员名 ○ ?适用于普通结构变量和结构数组变量 例: std.sex=\ std.sc[0]=91; pers[1].sc[2]=67; puts(per[2].name); scanf(\ printf(\2 结构指针变量名->成员名 ○3 (*结构指针变量名).成员名 ○?适用于指向结构类型的指针变量 例: pstd->sex='M'; ? (*psd).sex='M'; pstd->sc[2]=87; ? (*pstd).sc[2]=87; gets(pstd->name); ? gets((*psd).name); scanf(\ ? scanf(\ 2)通过结构指针引用结构成员变量时,++和--运算对结果的影响: 用以下实例来分析: struct { int a; int *s; }*p; 第一组引用: 对成员变量a的引用 1++p->a ? ++(p->a) ○说明: 成员变量a自增加1. 2(++p)->a ○说明: 指针p先移动一个单位,然后引用对应的成员变量a. 注意: p每移动一个单位要移动多少字节? 3(p++)->a ? p++->a ○说明: 先引用当前p所对应的成员a,引用完后,p移动 一个单位. 难点

C语言程序设计 - 结构体和共用体-样本教案

C语言程序设计教案结构体与共用体第一讲主要内容重点难点问题提出结构体变量的引用前面已经介绍了基本数据类型──整型、浮点型、字符型,也介绍了例子:inta[5];一种构造类型──数组,数组中各元素是属于同一种类型的。
推荐度:
点击下载文档文档为doc格式
3rl043fe0r9vfqx3d4pq7px008twlp015dw
领取福利

微信扫码领取福利

微信扫码分享