内容正文:
课题
统计某公司员工信息
课时
2课时(90 min)
教学目标
知识目标:
(1)掌握定义、初始化和引用结构体变量、结构体数组的方法
(2)掌握指向结构体变量、数组的指针的使用方法
能力目标:
能够灵活使用结构体变量编写程序
素质目标:
通过结构体类型的学习,提高选择合适方法解决不同问题的能力
教学重难点
教学重点:结构体变量,结构体数组,结构体指针
教学难点:结构体指针
教学方法
问答法、讨论法、讲授法、实践法
教学用具
电脑、投影仪、多媒体课件、教材
教学过程
主要教学内容及步骤
课前任务
【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过文旌课堂APP或其他学习软件,完成课前任务
请同学们上网查找,除了数组中可以存放多个数据,还有没有其他方式来存放多个数据。
【学生】完成课前任务
考勤
【教师】使用文旌课堂APP进行签到
【学生】班干部报请假人员及原因
问题导入
【教师】请同学们扫码观看“结构体类型数据的使用”视频(详见教材),讨论并回答以下问题:
什么是结构体类型?结构体类型数据的使用过程是怎样的?
【学生】思考、举手回答
传授新知
【教师】讲解结构体变量,结构体数组,结构体指针
一、结构体变量
✈【教师】多媒体观看“结构体类型(1)”视频(详见教材),让学生熟悉结构体类型的声明,结构体变量的定义,结构体变量的初始化,结构体变量的引用
1.结构体类型的声明
结构体是构造数据类型,它与数组的区别在于其成员可以是不同的数据类型。几乎每个结构体都有一个名字,称为结构体名,所有成员都组织在该名字之下。结构体成员是组成结构体的要素,它们的数据类型可以相同,也可以不同,每个成员都有自己的名字,称为结构体成员名。声明一个结构体类型的一般形式如下。
struct 结构体名
{
数据类型 成员1的名字;
数据类型 成员2的名字;
数据类型 成员3的名字;
……
};
结构体名是由用户指定的,又称“结构体标记”,大括号内是该结构体所包括的子项,即结构体成员。
其中,Stu为结构体名,它包含了五个成员,即num、name[20]、sex、age和score。结构体成员的定义方式与变量的定义方式相同,只是不能初始化。
这里的struct Stu是根据实际需要定义的一种新的数据类型,它相当于一个模型,但其中并无具体的数据,系统会为它分配实际内存单元。它的功能相当于int、float等,可以用struct Stu这种结构体数据类型来定义相应的结构体变量。
【课堂讨论】
✈【教师】请学生分组讨论以下问题
请同学们以小组为单位,讨论数组与结构体的区别。
✈【学生】讨论、总结、回答
✈【教师】总结学生的回答
✈提示
(1)结构体成员的类型可以是整型、浮点型、字符型、数组、指针、结构体或共用体等。因此,结构体可以嵌套使用,即一个结构体变量也可以成为另一个结构体变量的成员。
(2)结构体成员名可以与程序中其他变量同名,系统会自动识别它们,两者不会混淆。
(3)结构体声明既可以在函数内部进行,也可以在函数外部进行。在函数内部声明的结构体,只对函数内部可见;在函数外部声明的结构体,对声明点到源文件结束之间的所有函数都是可见的。一般在源文件的首部对结构体进行声明。
(4)在编写较大规模的程序时,常常将结构体类型声明放在一个头文件中,若想在其他源文件中使用该结构体类型,可用#include命令将该头文件包含到源文件中。
2.结构体变量的定义
结构体变量的定义形式主要有以下两种。
(1)先声明结构体类型再定义变量。例如,对已声明的结构体类型struct Stu,可以用该数据类型来定义变量:
struct Stu S1,S2; /*定义结构体变量S1和S2*/
其中,struct Stu是结构体数据类型,即说明变量的数据类型;S1和S2是结构体变量名。这样S1和S2就具有了struct Stu类型的结构,如图8-1所示(详见教材)。
在定义了结构体变量后,系统会为之分配内存单元。结构体变量所占字节数为所有成员所占字节数的总和。例如,在Visual C++ 2010中,变量S1占33个字节(4+20+1+4+4=33)。
这种方式是将结构体声明与结构体变量定义分开,在声明类型后可以随时定义变量,相对比较灵活。
✈提示
通常,结构体变量实际所占内存的大小会大于或等于所有成员所占内存字节数的总和,可用sizeof( )函数来获取,其使用方法为sizeof(结构体名)。
(2)在声明结构体类型的同时定义变量,其一般形式如下:
struct 结构体名
{
数据类型 成员1的名字;
数据类型 成员2的名字;
数据类型 成员3的名字;
……
}结构体变量名列表;
……(举例详见教材)
声明结构体类型和定