C案例教程教案(word文档)第十章.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:5 大小:37KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C案例教程教案(word文档)第十章.doc

C案例教程教案(word文档)第十章.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第10章结构体与共用体第一节结构体类型变量的定义和引用一、结构体类型的定义结构体类型的一般定义形式如下:struct结构体类型名{类型名1成员变量名1;类型名2成员变量名2;……类型名n成员变量名n;};例如,一个考生的结构体类型可定义如下:structexam{charname[30];charsex;intage;charaddr[40];intnumber;floatscore[20];};这里定义了一个exam类型的结构体,它包含有姓名name(字符数组)、性别sex(字符型)、年龄age(整型)、地址addr(字符数组)、考号number(整型)和成绩score(单精度浮点型)6个成员。可以看到,利用结构体类型数据,用户能够自行定义满足自己需要的数据结构,适应实际需求。二、结构体类型变量的定义、引用和初始化结构体类型定义只提供了一个类型,这个类型就象整型(int)一样是一个数据类型,其中并没有具体的数据,系统不会给它分配存储单元。要使用它,应该定义结构体类型的变量,并利用这种变量来处理具体数据。1.结构体类型变量的定义用已定义的结构体类型来声明结构体类型变量,声明的一般形式为struct结构体类型名变量表列;structexamexam1;/*定义结构体变量exam1*/2.结构体类型变量的引用引用结构体变量的一般形式为结构体变量.成员exame1.age=18;3.结构体类型变量的初始化同其他类型的变量一样,结构体类型变量的初始化可以在定义时完成。如果需要在程序中进行初始化。则需要逐个成员逐级对最低一级的成员赋初值。第二节结构体数组的定义、初始化和引用一、结构体数组的定义和初始化定义结构体数组与定义结构体变量一样,可以在定义结构体类型的同时声明,也可以在定义结构体类型之后声明。如定义一个一维数组的形式可以写成struct结构体名结构体数组名[长度];二、结构体数组的成员变量引用其一般引用形式为数组名[下标].成员变量名第三节指向结构体类型数据的指针一、指向结构体类型数据的指针定义了结构体类型之后,可以声明结构体变量,也可以定义指向结构体变量的指针。structstustu1={"张文","男",21,"上海路2号",30001,80},a,*p1;p1=&a,p=&stu1;现在共有3种引用结构体成员变量的格式:(1)结构体变量.成员名,例如stu1.name。(2)(*q指针变量).成员名,例如(*p).name。(3)指针变量->成员名,例如p->name。二、指向结构体数组的指针可以设定指向结构体数组或数组元素的指针和指针变量structstustu1[2]={{"张文","男",21,"上海路2号",30001,80},{"贾博丽","女",18,"建设路123#",30002,92}},*p;p=stu1;三、结构体类型数据作函数型参根据需要,可以向一个函数传递结构体变量的成员,结构体变量或者结构体数组。即结构体类型数据可以作函数的型式参数。1.结构体变量的成员作函数型参2.结构体变量和结构体变量的地址作函数型参3.结构体数组作函数型参第四节共用体类型变量的定义和引用一、共用体类型及共用体变量的定义定义共用体类型的一般形式:union共用体名{类型名1成员名1;类型名2成员名2;……类型名n成员名n;};例如:unionstu{charname[8];floatspend;intclass;}此处定义了一个stu类型的共用体定义共用体类型之后再声明共用体变量:unionstuc1,c2,*up;二、共用体变量的引用不能整体引用共用体变量来进行输入和输出,只能引用共用体变量的成员,如引用上例中声明的共用体变量,可以写为printf(“%s”,c1.name);p=&c1p->class=23;应该注意的是,因为共用体变量的各个成员共同使用同一段内存空间,因此在某一瞬时只能有一个成员起作用,而此时其它成员则并不存在。所以在赋值时只能实现对共用体变量的一个成员赋值,也不能实现对共用体变量的初始化。例如,如果有以下赋值语句:scanf(“%s”,&c1.name);c1.spend=4.5;c1.class=56;那么,前两个赋值在最后一个赋值语句执行之后就会丢失,使用下面的语句是不对的,因为此时name成员并没有值:if(name[6]==’C’)i++;因此,在引用共用体变量时应该注意当前存放在变量中的到底是哪个成员。由于共用体变量存储的这种特殊性,既不能将共用体变量作为含数参数,也不能使函数返回共用体