结构类型数据描述

结构类型数据描述

ID:46923027

大小:663.00 KB

页数:45页

时间:2019-11-30

结构类型数据描述_第1页
结构类型数据描述_第2页
结构类型数据描述_第3页
结构类型数据描述_第4页
结构类型数据描述_第5页
资源描述:

《结构类型数据描述》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第11章结构类型数据描述11.1结构体11.2共用体11.3枚举类型11.4用typedef定义类型名11.5位段结构第11章结构类型数据描述这种多项组合又有内在联系的的数据称为结构体(structure)。它是可以由用户自己定义的。11.1结构体在实际应用中,有时需要将一些有相互联系而类型不同的数据组合成一个有机的整体,以便于引用。如学生学籍档案中的学号、姓名、性别、年龄、成绩、地址等数据,对每个学生来说,除了其各项的值不同外,但表示形式是一样的。numnamesexagescoreAddr10010LiFu

2、nF1887.5Beijing1.概述2.结构体类型变量的定义两者缺一不可1)结构体类型的定义形式struct结构体名{分量表};其中“分量表”中的分量也应进行类型说明,例如:structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};即:类型标识符分量名;分量描述由用户定义的“结构体类型”,可以同标准类型一样作为定义变量的类型。相当于PASCAL语言中的记录(record)。2)定义结构体类型变量的方法先定义结构体类型

3、再定义变量定义了结构体类型structstudent后,可以用它定义变量。注:不能写成structst1,st2;必须同时指定结构体名。为了方便起见,可以在程序开头定义符号常量进行简化。如:如:structstudentst1,st2;则在程序中可以直接写成:STUDENT{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};#defineSTUDENTstructstudentSTUDENTst1,st2;在定义类型的同时定义变量如:st

4、ructstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}st1,st2;struct结构体名{分量表;}变量表;则一般定义形式为:直接定义结构类型变量定义形式为:struct{分量表;}变量表;在struct后不出现结构体名,因此也不能再以此定义相同的结构体变量。3.关于结构体类型的几点说明类型与变量是两个不同的概念。一般先定义结构体类型,再定义变量为该类型。变量可以赋值、存取或运算,而类型没有这些操作。在编译时,对变量

5、分配空间,对类型来说不存在分配空间。对结构体中的分量可以单独使用。分量也可以是一个结构体变量。如student中要增加birthday,则可按如下方式进行定义:structdate{intmonth;intday;intyear;};structstudent{…structdatebirthday;…}st1,st2;先定义一个日期结构该分量也是一个结构体分量名可以与程序中的变量名相同,两者之间不会产生混淆。4.结构体类型变量的引用引用结构体变量应遵守如下规则:1)结构体变量中分量的引用方式结构体变量名

6、分量名[二级分量名]其中:“”为分量运算符,在所有的运算符中优先级最高。2)结构体变量的分量本身又属于结构体类型时只能对最低级分量进行操作。如:st1.num;st1.name;st1.birthday.day;写成st1.birthday并不会访问st1中的birthday,只会引起警告错误。3)不能将一个结构体变量直接进行输入输出,只能对结构体变量的各分量进行输入输出。如:scanf(“%d,%s,%c,%d,%f,%s”,&st1);错误printf(“%d,%s,%c,%d,%f,%s”,st1)

7、;错误printf(“%s,%d”,st1.name,st1.birthday.day);正确4)分量和结构体变量的地址均可以被引用如:scanf(“%d”,&st1.num);输入st1.num的值printf(“%x”,&st1);以十六进制输出st1的首地址5.结构体变量的初始化1)外部存储类的结构体变量初始化例11.1structstudent{longintnum;charname[20];charsex;charaddr[30];}a={89031,“LiLin”,‘M’,“123BeijingRo

8、ad”};main(){printf(“%ld,%s,%c,%s”,a.num,a.name,a.sex,a.addr);}输出结果:89031,LiLin,M,123BeijingRoad定义结构体的同时定义变量a并进行初始化。2)静态存储类的结构体变量初始化main(){structstudent{longintnum;charname[20];charsex;charaddr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。