资源描述:
《语言程序设计1 结构体和共用体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章结构体和共用体青岛农业大学理信学院主要内容一、结构体与结构体数组二、共用体三、枚举类型四、typedef定义类型青岛农业大学理信学院一、结构体例子:表示一个学生的信息,比如学号、姓名、性别、年龄等。分别定义普通变量intnum;char*name;charsex;intage;无法反应出这些变量的内在联系。构造类型的数据结构——数组??结构体就是用于表示上述结构的数据结构。青岛农业大学理信学院structstudent{intnum;char*name;charsex;intage;};关键字,表示以下定义一个结构体结构体类型的名字结构体的成员。定义方式与普通
2、变量类似强调:student是一种类型,跟int,char,float等基本类型同等地位!!青岛农业大学理信学院声明结构体类型的一般形式struct结构体名{成员1;成员2;……};青岛农业大学理信学院定义student类型的变量(1)structstudentstu1,stu2;先声明结构体类型再定义变量青岛农业大学理信学院定义student类型的变量(2)在声明类型的同时定义变量structstudent{intnum;char*name;charsex;intage;}stu1,stu2;一般形式:struct结构体名{成员表列}变量名表列;青岛农业大学理信学院
3、定义student类型的变量(3)直接定义结构体类型变量struct{intnum;char*name;charsex;intage;}stu1,stu2;一般形式:struct{成员表列}变量名表列;青岛农业大学理信学院例子:结构体变量的使用#include“stdio.h”voidmain(){structstudent{longintnum;char*name;charsex;intage;}stu1={10101,”LiLin”,’M’,21};printf(“No:%ld”,stu1.num);printf(“Name:%s”,stu1.name);
4、printf(“Sex:%c”,stu1.sex);printf(“Age:%d”,stu1.age);}青岛农业大学理信学院结构体成员的引用结构体变量名.成员名其使用跟普通变量相同结构体变量的初始化定义时初始化:StructStudentstu1={10101,”LiLin”,’M’,19};直接赋值:stu1.num=10101;结构体数组一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有10个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组不同之处在于,每个数组元素都是一个结构体类型
5、的数据,它们都分别包括各个成员(分量)项。结构体数组定义structstudent{intnum;charname[20];charsex;intage;floatscore;};structstudentstu[3];青岛农业大学理信学院结构体数组例子例11.2对候选人得票的统计程序。设有3个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。#include#includestructperson{charname[20];intcount;};leader[3]={“Li”,0,“Zhang”,0
6、,“Fun”,0}voidmain(){inti,j;charleader_name[20];for(i=1;i<=10;i++)scanf(“%s”,leader_name);for(j=0;j<3;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;for(i=0;i<3;i++)printf(“%s:%d”,leader[i].name,leader[i].count);}指向结构体类型的指针一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变
7、量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。例子stuctstudentstu;structstudent*p=&stu;使用指针变量引用结构体的成员:(*p).num=10110;(*p).age=18;p->age=18;其中,->称为指向运算符以下三种形式等价:结构体变量.成员名(*p).成员名p->成员名指向结构体数组的指针指针变量也可以用来指向结构体数组中的元素。structstudentstu[3],*p;p=stu;或者p=&stu[0];for(p=stu;p