9第九章结构体与共用体
- 格式:doc
- 大小:264.00 KB
- 文档页数:19
少年易学老难成,一寸光阴不可轻 - 百度文库
1 第十一章 结构体与共用体
(2学时)
一、教学目的及要求
要求学生了解结构体、联合体及枚举类型变量的使用,熟练掌握结构体、联合体及枚举类型变量的定义。
二、教学重点及难点
重点:
结构体的定义,结构体变量的定义,结构体成员的引用,结构体指针。
难点:
结构体的定义及使用结构体解决实际问题。
三、教学手段
板书与多媒体课件演示相结合
四、教学方法
启发式教学、讲解、演示
五、作业
1.书318习题11.3、11.9、11.10
2.习题册
六、参考资料
1、谭浩强、张基温、唐永炎主编《C语言程序设计教程》,第十一章
2、 杨非主编《C语言程序设计应试辅导—二级》,第十一章
少年易学老难成,一寸光阴不可轻 - 百度文库
2
七、教学内容与教学设计
教学内容 教学设计 备注
【导入】
在实际问题中,一组数据往往具有不同的数据类型。例如, 在学生登记表中,姓名应为字符型;学号可为整型或字符型; 年龄应为整型;性别应为字符型;成绩可为整型或实型。 显然不能用一个数组来存放这一组数据。 因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,C语言中给出了另一种构造数据类型——“结构体”。 导入
从第二章已讲过的知识点—求成绩平均值等简单例子导入
【讲授新课】
一、结构体的定义
定义一个结构体的一般形式为:
struct 结构体名 {
类型说明符1 成员名1;
类型说明符2 成员名2;
类型说明符3 成员名3;
……..
类型说明符n 成员名n;
};
[板书]
[幻灯片]
[板书]
[幻灯片]
[引导]
学生对结构体 少年易学老难成,一寸光阴不可轻 - 百度文库
3 成员列表由若干个成员组成, 每个成员都是该结构体的一个组成部分。对每个成员也必
须作类型说明.成员的定义与定义变量一样。例如:
struct stu
{ int num;
char name[20];
char sex;
float score;
};
在这个定义中,结构体名为stu,该结构体由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符数组;第三个成员为sex,字符变量;第四个成员为score,实型变量。 应注意在括号后的分号是不可少的。凡说明为结构stu的变量都由上述4个成员组成。由此可见, 结构是一种复杂的数据类型,是数目固定,类型不同的若干有序变量的集合。
二、结构体变量的说明
结构定义之后,即可进行变量说明。说明结构体变量有以下三种方法。以上面定义的stu为例来加以说明。
1. 先定义结构体,再说明结构体变量。如:
struct stu{
int num;
char name[20];
char sex;
float score;
};
struct stu boy1,boy2;
说明了两个变量boy1和boy2为stu结构类型, 则共用体优点的思考
[板书]
[幻灯片]
[重点]
[课堂设计]
[提问]
结合例子讲解
少年易学老难成,一寸光阴不可轻 - 百度文库
4 boy1,boy2具有和struct stu相同的结构.
2. 在定义结构体的同时说明结构体变量。例如:
struct stu{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;
3. 直接说明结构体变量。例如:
struct{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;
第三种方法与第二种方法的区别在于第三种方法中省去了结构体名,而直接给出结构体变量。
结构体变量可以作为结构体的成员,例如:
struct date{
int month;
int day;
int year;
}
struct{
int num;
char name[20];
char sex;
struct date birthday; /*结构体变量birthday作为
[板书]
[幻灯片]
[重点]
少年易学老难成,一寸光阴不可轻 - 百度文库
5 结构的成员*/
float score;
}boy1,boy2;
结构名和结构变量是两个不同的概念,不能混淆。 结构名只能表示一个结构形式,编译系统并不对它分配内存空间。
只有当某变量被说明为结构体类型时,才对该变量分配存储空间。 因此&stu这种写法是错误的,不可能去取一个结构名的首地址。
三、结构体变量成员的引用
定义好了结构体变量后,可以引用结构体变量中的成员,引用方式为:
结构体变量名.成员名 .是成员运算符,在所有的运算符中优先级最高.
例如:boy1.num/*表示 boy1变量中的成员num */
如果成员本身又是一个结构则可以逐级找到最低级的成员.例如:boy1. birthday.day.
成员被引用后,可以像使用普通变量一样的使用它.
boy1.num=4; boy1. birthday.day=15;
四、结构类型变量的赋值 可给出一个编写结构体的题目,供学生进行课堂练习。
[板书] 少年易学老难成,一寸光阴不可轻 - 百度文库
6 说明了boy1,boy2变量为stu类型后,即可向这两个变量中的各个成员赋值。赋值方式有以下几种:
(1)分别对结构体变量的成员赋值
例如: boy1.num=4; boy1.name=”Jim”;
boy1.sex=’M’; boy1.score=80;
boy1. birthday.day=15; boy1.
birthday.month=12; boy1. birthday.year=1983;
(2)对结构体变量整体:可以将一个已经赋值的结构体变量整体赋给另一结构体变量;
例如:
struct stu /*定义结构*/
{ int num;
char *name;
char sex;
float score;
} boy2,boy1={102,"Zhang ping",'M',78.5};
main()
{ boy2=boy1;
printf("Number=%d\nName=%s\n",boy2.num,);
printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}
本例中,boy1、boy2均被定义为结构体变量,并对boy1作了初始化赋值。在main函数
中,把boy1的值整体赋给boy2,(只是将boy1中的成员的值依次赋给boy2中与之相对应的成员,并不是使boy2和boy1在内存中占用同一存储空间), 然后用两个printf语句输出[幻灯片]
[重点]