第九章 结构体与共用体
- 格式:ppt
- 大小:212.00 KB
- 文档页数:25
第十一章结构体与共用体(2学时)一、教学目的及要求要求学生了解结构体、联合体及枚举类型变量的使用,熟练掌握结构体、联合体及枚举类型变量的定义。
二、教学重点及难点重点:结构体的定义,结构体变量的定义,结构体成员的引用,结构体指针。
难点:结构体的定义及使用结构体解决实际问题。
三、教学手段板书与多媒体课件演示相结合四、教学方法启发式教学、讲解、演示五、作业1.书318习题11.3、11.9、11.102.习题册六、参考资料1、谭浩强、张基温、唐永炎主编《C语言程序设计教程》,第十一章2、杨非主编《C语言程序设计应试辅导—二级》,第十一章七、教学内容与教学设计教学内容教学设计备注【导入】在实际问题中,一组数据往往具有不同的数据类型。
例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。
显然不能用一个数组来存放这一组数据。
因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。
为了解决这个问题,C语言中给出了另一种构造数据类型——“结构体”。
导入从第二章已讲过的知识点—求成绩平均值等简单例子导入【讲授新课】一、结构体的定义定义一个结构体的一般形式为:struct 结构体名 {类型说明符1 成员名1;类型说明符2 成员名2;类型说明符3 成员名3;……..类型说明符n 成员名n; }; [板书][幻灯片][板书][幻灯片] [引导]学生对结构体成员列表由若干个成员组成,每个成员都是该结构体的一个组成部分。
对每个成员也必须作类型说明.成员的定义与定义变量一样。
例如:struct stu{ int num;char name[20];char sex;float score;};在这个定义中,结构体名为stu,该结构体由4个成员组成。
第一个成员为num,整型变量;第二个成员为name,字符数组;第三个成员为sex,字符变量;第四个成员为score,实型变量。
第9章结构体与共用体9.1典型考试题剖析9.1.1选择题【例1】若指针p已经正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是。
A) p=2*(int *)malloc(sizeof(int)); B) p=(int*)malloc(2*sizeof(int));C) p=(int *)malloc(2*2); D) p=(int*)calloc(2,sizeof(int));✧考点:动态存储分配函数。
✧分析:根据动态存储分配函数malloc和calloc的函数原型可以知道,calloc函数的调用形式为:void * calloc(unsigned n,unsigned size);表示在动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配域起始地址的指针,因此答案D是正确的。
malloc函数的调用形式为:void * malloc(unsigned int size);表示是在内存的动态存储区分配一个长度为size的连续空间,并返回一个指向分配域起始地址的指针,答案B和C中malloc的参数分别为:2*(sizeof(int))和2*2,都是整型数,因此调用形式正确。
答案A中(int *)malloc(sizeof(int))的返回值为一个地址值,将地址的值乘以2是没有意义的。
✧答案:A【例2】若有以下说明和定义:struct test{ int m1; char m2; float m3;union uu{ char u1[5]; int u2[2]; }ua;}myaa;则sizeof(struct test)的值是。
A) 12 B) 16 C) 14 D) 9✧考点:结构体类型和共用体类型所占内存的字节数。
✧分析:sizeof(struct test)的功能是求结构体类型test所占用的内存字节数。
它应该等于结构体每个成员所占的字节数之和。
m1为int型,占2字节,m2为char型,占1字节,m3为float型,占4字节,接下来是一个共用体类型uu,共用体所占的字节数应该等于成员中最长者所占的字节数,u1占5字节,u2占4字节,那么该共用体类型应该占用5字节,所以2+1+4+5=12。