资源描述:
《结构、联合及枚举类型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章结构、联合及枚举类型*重点与难点8.1结构体类型和结构变量的定义8.2结构体变量的引用和初始化8.3结构体数组8.4结构体类型的指针变量8.5结构体与函数8.6用typedef定义类型8.7用指针处理链表8.8共用体8.9枚举类型*本章小结*作业重点与难点重点:结构体、共用体和枚举类型。难点:链表的操作。二维表(关系)学号姓名性别年龄成绩地址10001ZhangXinM1990.5Shanghai10002WangLiF2098Beijing10010LiFunM1887.5Guangzhou8.1结构体类
2、型和结构体变量的定义8.1.1结构体类型的定义8.1.2结构体变量的定义8.1.1结构体类型的定义struct结构体名{数据类型成员名1;数据类型成员名2;……数据类型成员名n;};点坐标yx.(x,y)二维坐标的点structpoint{floatx;floaty;};点的结构体类型圆的结构体r(x,y)structcircle{structpoint{floatx;floaty;}dot;floatr;}structpointdot;8.1.2结构体变量的定义1、先定义结构体类型,再定义结构体变量2、定义结构
3、体类型的同时定义结构体变量3、直接定义结构体类型变量1、先定义结构体类型,再定义结构体变量structcircle{structpointdot;floatr;};structcirclegraph1,graph2;2、定义结构体类型的同时定义结构体变量structstudent{intnum;charname[20];charsex;intagefloatscore;charaddr[30];}stu1,stu2;3、直接定义结构体类型变量struct{intmonth;intday;intyear;}date
4、1,date2;8.2结构体变量引用和初始化1、结构体变量的引用2、结构体变量的初始化1、结构体变量的引用在ANSI中除了允许具有相同类型的结构体变量相互赋值外,一般对结构体变量的引用是通过其成员来实现。成员引用形式:结构体变量名.成员名举例:graph1.rgraph1.dot.x例8.1求两个同心圆的面积差main(){structpoint{floatx;floaty;};structcircle{structpointdot;floatr;};structcirclegraph1,graph2;float
5、area;graph1.dot.x=2;graph1.dot.y=3;graph1.r=4;graph2.dot=graph1.dot;printf("Graph2.r=");scanf("%f",&graph2.r);area=3.14*(graph2.r*graph2.r-graph1.r*graph1.r);printf("Dotis(%-4.1f,%-4.1f)",graph1.dot.x,graph1.dot.y);printf("Radiusis%-4.1fand%-4.1f",graph1.
6、r,graph2.r);printf("Area(r2-r1)=%-6.1f",area);}2、结构体变量的初始化初始化形式结构体类型结构体变量={初始化数据};举例structcirclegraph1={{2,3},4};即x=2,y=3,r=4;其中内层{}可省。8.3结构体数组structcirclecir[3];structcredit{intnum;char*name;charsex;floatscore[3]}stu[5];结构体数组举例structcredit{intnum;char*name
7、;charsex;floatscore[3];}stu[5]={{101,"ZhaoHua",'M',45,80,78},{102,"XianJiang",'M',62.5,76,80},{103,"SunJun",'F',92.5,92,89},{104,"LiWei",'F',87,88,91},{105,"ZhouLi",'M',58,60,77}};例8.2计算学生的总分,按总分排名次及输出名次表stu[i].total+=stu[i].score[j];排序:选择法for(i=0;i8、k=i;for(j=i+1;jstu[k].total)k=j;if(k!=i){temp=stu[i];stu[i]=stu[k];stu[k]=temp;}}8.4结构体类型的指针变量结构体变量可以由不同类型的成员构成,各个成员所占空间字节数之和是结构体变量所占的内存空间。结构体的指针是结构体变量在内存中得首地址。结构体类