资源描述:
《C语言程序设计教程教学课件李淑华 第16讲 结构体与共用体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、10.5结构体数组10.5.1结构体数组的定义(1)先定义结构体类型再定义结构体数组。如:structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstu[3];(2)直接定义一个结构体数组。如:structstudent{intnum;┆}stu[3];或:struct{intnum;┆}stu[3];99001zhangxinM1990.5shanghai99002Wangli
2、F2098Beijing99003Yanglanm2186ShenyangStu[0]Stu[1]Stu[2]10.5.2结构体数组的初始化结构体数组初始化的一般形式是在定义数组的后面加上={初值列表};如:structstudent{intnum;┆}structstudentstu[]={{----},{----},----,{----}};注意:此处有“;”号和无“;”号的区别。10.5.3举例例10.3对选举人得票的统计程序。设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出每人
3、得票结果。程序如下:structperson{charname[20];intcount;}leader[3]={“Li”,0,”Zhang”,0,”Wang”,0};main(){intI,j;charname[20];for(i=1;i<=10;i++){scanf(“%s”,name);for(j=0;j<3;j++)if(strcmp(name,leader[j].name)leader[j].count++;}printf(“”);for(i=1;i<3;i++)printf(“%5
4、s:%d”,leader[i].name,leader[i].count);}两处name是否为重名10.6指向结构体类型数据的指针一个结构体变量指针就是该变量所占据的内存起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。10.6.1指向结构体变量的指针例10.4main(){structstudent{longintnum;charname[20];charsex;floatscore;};structs
5、tudentstu1;structstudentp;p=&stu1;stu1.num=99001;strcpy(stu1.name,”LiLin”);stu1.sex=‘M’;stu1.score=89.5;printf(“No.%ldname:%ssex:%cscore:%f”,stu1.num,stu1.name,stu1.sex,stu1.score);printf(“No.%ldname:%ssex:%cscore:%f”,(p).num,(p).nam
6、e,(p).sex,(p).score);}在C语言中,为了使用的方便和使之直观,可以把(p).num改用p->num来代替,即:p所指向的结构体变量中的num成员。以下三种形式等价:(1)结构体变量.成员名;(2)(p).成员名;(3)p->成员名;其中p->称为指向运算符。P->n得到p指向的结构体变量中的成员n的值。P->n+1得到p指向的结构体变量中的成员n的值,用完该值后使它加1。++P->n得到p指向的结构体变量中的成员n的值使之加1(先加)。10.6.2指向结构体数组的指针对结构体数
7、组及其元素也可以用指针或指针变量来指向。例10.5structstudent{intnum;charname[20];charsex;intage;};structstudentstu[3]={{99001,”LiLin”,’M’,18},{99002,”ZhangFan”,’M’,19},{99003,”WangMin”,’F’,20}};main(){structstudentp;printf(“No.Namesexage”);for(p=stu;p8、5d%-20s%2c%4d”,p->num,p->name,p->sex,p->age);}注意:(1)如果p的初值为stu,即指向第一个元素,则p+1后指向下一个元素的起始地址。例如:(++p)->num先使p自加1,然后得到它指向的元素中的num成员值(即99002)(p++)->num先得到p->num的值(即99001),然后使p自加1,指向stu[1]。(2)指针p已定义为指向structstudent类型的数据,它只能指向一个结构体数据(也就是p的值是stu数组的一个元