下载此文档

第十讲结构体与共同体.docx


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
该【第十讲结构体与共同体 】是由【夏天教育】上传分享,文档一共【6】页,该文档可以免费在线阅读,需要了解更多关于【第十讲结构体与共同体 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。结构体与共同体本章要点:掌握结构和联合类型数据的定义方法和引用方法;了解枚举类型数据的定义方法和引用方法。§ 概述有时,需将不同类型的数据组合成一个有机的整体,以便于引用。这些数据是相互联系的。如一个学生的有关信息:可采用结构体数据结构描述上述信息。例如:struct student{int num;char name[20];char sex;int age;char addr[30];};定义一个结构体类型的一般形式为:struct 结构体名{成员表列};:先定义结构体类型再定义变量名struct student{int num;char name[20];char sex;int age;char addr[30];};structstudentstudent1,student2;有时,可用符号常量代表一个结构体类型,如:#define STUDENT struct studentSTUDENT{int num;char name[20];char sex;int age;char addr[30];};这样,可直接用 STUDENT定义变量,如: STUDENT student1,student2;此时,不必再写关键字struct方法二:在定义类型的同时定义变量,如:struct student{int num;char name[20];char sex;int age;char addr[30];}student1,student2;一般形式是:struct 结构体名{成员表列}变量名表列;方法三:直接定义结构类型变量。其一般形式是:struct{成员表列}变量名表列;此时,不出现结构体名几点说明:类型与变量是不同概念,不要混淆;2. 结构体中的成员,可以单独使用,其作 用与地位相当于普通变量;成员也可以是一个结构体变量;例如:structdate{intmonth;intday;intyear;};Structstudent{intnum;charname[20];intage;structdatebirthday;}student1,student2;成员名可以与程序中的变量名相同,二者不代表同一对象。:不能将一个结构体变量作为一个整体进行赋值和输出;只能对其各个成员分别输出(引用形式为:)。printf( “ ..”,student1);printf( “%d”,);输出 ,只能对最低级的成员进行赋值或存取以及运算。如:,如:sumage=+;可以引用成员的地址,也可以引用结构体变量的地址,如scanf(“%d”,&);printf( “%o”,&student1);scanf( “%d,%s,%c,%d,%s”,&student1);§ 结构体变量的初始化(一)对外部存储类型的结构体变量初始化:struct student{longintnum;charname[20];charsex;charaddr[20];}a={9801,”Wanghong”,?W?,”2LinggongRoad”};main(){printf( “No.:%ld n”,,,,);}运行结果为:No.:9801name:Wanghongsex:Waddress:2LinggongRoad(二)对静态存储类型的结构体变量初始化,如:main(){staticstruct student{longintnum;charname[20];charsex;charaddr[20];}a={9801, ”Wanghong”,?W?,”2LinggongRoad ”};printf(“No.:%ldn”,,,,);}§ 结构体数组(每个数组元素都是一个结构体类型的数据)(一)结构体数组的定义,如struct student{intnum;charname[20];charsex;intage;charaddr[30];};structstudnt stu[3];也可直接定义,如structstudent{intnum;}stu[3];或struct{intnum;}stu[3];(二)结构体数组的初始化(只能对全局的或静态存储类别的数组初始化)structstudent{intnum;charname[20];charsex;intage;charaddr[30];}stu[3]={{111,”Li”,?M?,18,”Dalian”},{},{}};也可采用:structstudent{intnum;};structstudentstu[]={{},{},{}};结构体数组的初始化的一般形式是在定义数组后面加上: ={初值表列};例题:设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。structperson{charname[20];intcount;}leader[3]={ “Li”,0,”zhang”,0,”Liu”,0};main(){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( “%5s:%dn”,leader[i].name,leader[i].count); }:是该结构体变量所占居的内存段的起始地址。例如:main(){structstudent{longintnum;charname[20];“No.:%ld\nname%s\nn”,,,charsex;};structstudentstu_1;structstudent*p;p=&stu_1;=9901;strcpy(, ”LiMin ”);=,W?;printf();printf( \nNo“.:%ld\nname%s\nn”,(*p).num,(*p).name,(*p).sex);}引用结构体成员的三种形式:●结构体变量名 .成员名(*p).成员名p->成员名试分析以下运算:p->n得到p指向的结构体变量中的成员n的值p->n++得到p指向的结构体变量中的成员n的值,用完后使它加1;++p->n得到p指向的结构体变量中的成员n的值使其先加1§:使几个不同的变量共占同一段内存的结构,称为 “共用体”类型的结构。“共用体”类型变量的定义形式为:union 共用体名{成员表列}变量表列;例如:uniondata{inti;char ch;float f;}a,b,c;或uniondata{inti;charch;floatf;};uniondataa,b,c;或union{int i;char ch;float f;}a,b,c;注意共用体类型变量与结构体类型变量的区别●结构体类型变量所占内存长度是各成员占的内存长度之和。●共用体类型变量所占内存长度等于最长的成员的长度。共用体变量的引用方式注意:只能引用共用体变量中的成员,不能引用共用体变量本身。如:(引用共用体变量中的整型变量i)(引用共用体变量中的字符变量ch)(引用共用体变量中的实型变量f)不能只引用共用体变量,如:printf(“%d”,a); ;共用体变量中起作用的成员是最后一次存放的成员;;,也不能企图引用变量名来 得到成员的值,又不能在定义共用体变量时对它初始化。不能把共用体变量作为函数参数,也不能使函数带回共用体变量,但可使用指向共用体变量的指针;共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。而结构体也可以出现在共用体类型定义中,数组也可以作为共用体的成员。§ 枚举类型●若一个变量只有几种可能的值,可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。●定义方法:先定义枚举类型enumweekday{sun,mon,tue,wed,thu,fri,sat};再用此类型定义变量,如:enumweekdayworkday,week_end;或直接定义枚举变量。如:enumweekday{sun,mon,tue,wed,thu,fri,sat}workday,week_end;说明:●枚举元素为常量,不是变量,故不能对它们赋值●枚举常量有值。如上面定义中,sun、mon、tue·sat的值依次为0、1、2·7●也可改变枚举元素的值,在定义时指出,如:enumweekday{sun=7,mon=1,tue,wed,thu,fri,sat};●枚举值可用来作判断比较,如:if(workday==mon) if(workday>sun)●一个整数不能直接赋值给一个枚举变量,应先进行强制类型转换才能赋值,如:workday=(enum weekday)2; (相当于将序号为 2的枚举元素值赋给 workday,即:workday=tue;

第十讲结构体与共同体 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人夏天教育
  • 文件大小21 KB
  • 时间2024-03-25