资源描述:
《实验二十五结构体和共用体实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验二十五结构体和共用体实验Ø实验要点一、结构体数组1、结构体数组的定义、初始化若数组元素的类型为结构体类型,数组为结构体数组。定义结构体数组的同时也可对数组进行初始化操作。例如,structstudent{intnumber;/*学号*/charname[10];/*姓名*/floatscore[4];/*四门课程成绩*/floattotal;/*总分*/floatave;/*平均成绩*/}stu[3]={{461,"liu",{80,78,67,80},0,0},{032,"geng",{98,78,86,90},0,0},{103,"qian",{7
2、9,89,68,80},0,0}};可以定义指向结构体数组元素的指针变量,然后通过指针对数组元素操作。2、结构体数组的引用结构体数组元素也是通过数组名和下标来引用,但要注意只能对最低级的成员进行存取和运算。引用的一般形式为:数组名[下标].成员名。例如,stu[1].number、stu[0].score[2]、stu[2].ave,当结构体类型的指针指向结构体类型的变量时,通过指针引用结构体数组元素的形式和通过指针引用结构变量形式一样,为:(*指针变量名).成员名或指针变量名->成员名。例如,语句“p=&stu[1];”之后,可以有(*p).number
3、、(p-1)->score[2]、p->ave;等语句。二、共用体的定义和使用1,共用体的关键字为union,其他定义方法同结构体。2,共用体也分为共用体类型和共用体变量,在程序设计过程中,要注意区分。三、关于共用体变量的几点说明a)给共用体变量赋值时,只能对共用体的一个成员赋值,而不能对整个共用体变量赋值。b)对共用体变量而言,只有最近一次被赋值的成员是有效的,其他成员无效。c)共用体变量不能在定义时初始化。d)若共用体的成员是构造类型的,则需要逐级引用至最低级的成员。e)共用体变量的地址和共用体各个成员的地址是相同的,但是它们的类型是不同的。四、结构体
4、与共用体的异同1,在结构体中,各成员各自占用自己的内存空间,他们是同时存在的,一个结构体变量的总长度等于所有成员长度之和。2,在共用体中,所有成员不能同时占用它的内存空间,他们是不能同时存在的,一个共用体变量的长度等于最长的成员项的长度。一、实验名称:结构体和共用体实验二、实验目的:1、通过实验掌握结构体和共用体的基本概念2、进一步掌握结构体与共用体的类型定义、变量说明和成员项的使用3、进一步掌握结构体和共用体的使用方法三、实验内容:1、请完成程序填充(注意:不得加行、减行、加句、减句)。功能:该程序计算四位学生的平均成绩,保存在结构中,然后列表输出这些学
5、生的信息。#includestructSTUDENT{charname[16];intmath;intenglish;intcomputer;intaverage;};voidGetAverage(structSTUDENT*pst)/*计算平均成绩*/{intsum=0;sum=____________;pst->average=sum/3;}voidmain(){inti;structSTUDENTst[4]={{"Jessica",98,95,90},{"Mike",80,80,90},{"Linda",87,76,70},{"Pe
6、ter",90,100,99}};for(i=0;i<4;i++){GetAverage(____________);}printf("NametMathtEnglishtComputAverage");for(i=0;i<4;i++){printf("%st%dt%dt%dt%d",st[i].name,st[i].math,st[i].english,st[i].computer,st[i].average);}}运行结果及分析:2、仔细分析程序的运行结果,掌握“-〉”和“*”运算符的优先级及++在前在后的含义。#include
7、structx{inta;char*b;}*p;chary0[]="Li",y1[]="Wang";structxxw[]={{1,y0},{4,y1}};main(){p=xw;printf("%c",++*p->b);printf("%d",(*p).a);printf("%d",++p->a);printf("%d",(++p)->a);printf("%c",*(p++)->b);}3、仔细分析程序的运行结果。运行结果及分析:main(){unionexample{struct{intx;inty;}in;inta[2];}e
8、={0,0};e.a[0]=1;e.a[1]=2;printf("