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语句输出[幻灯片]

[重点]