资源描述:
《数据结构第十章构造类型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章构造类型第一节C数据类型概述简单类型结构类型.编译系统预定义;.用户自己定义.只赋单值;.可赋多值.数据独立;.数据之间相互关联如:日期:1999,5,30商品:W3024,洗衣机,2000.0元C语言描述关联数据的方法:数组:元素为同一类型.如:doubletest[30][2];结构体:元素为不同类型.如:structstudent{longnumber;charname[6];intgrade;};枚举类型:如:enumsex{male,femal};说明:枚举类型{}中为常量标识符,从左至右用数值0,1,2
2、…来表示其值.第二节结构体类型的定义形式:struct结构名{成员说明表列};说明:1.结构名为用户自定义标识符;2.成员表列也称为域表列;3.可以嵌套定义例10.1分别定义代表日期,商品,学生信息的结构体类型.日期结构体类型:structdate{intyear;intmonth;intday;};商品结构体类型:structproduct{char*partname;doubleprice;intstock;};学生结构体类型:structdate{intyear,month,day;};structstudent{
3、longnumber;char*name;structdatebirthday;intgrade;};嵌套等价于structstudent{longnumber;char*name;struct{intyear,month,day;}birthday;intgrade;};student的结构:出生年月学号姓名年月日总分第三节结构体变量一.结构体变量的定义方法1.先定义类型,后说明变量如:structdate{intyear;intmonth;intday;};structdatex,y;方法2.在定义类型的同时说明变量
4、如:structdate{intyear;intmonth;intday;}x,y;含义:x:x.yearx.monthx.dayy:y.yeary.monthy.day方法3:定义的结构类型仅供程序一处引用,即只定义一次变量.如:struct{longnum;doublescore;}a,b;注意:1.一个结构体变量的存储开销(内存字节总数)为所有成员字节数的总和;2.当两个结构变量具有完全相同的结构类型时,a=b赋值正确,即把a中的每一个成员的值一一赋给b.如上a变量的存储字节为4+8=12.二.结构体变量的引用形式
5、:结构体变量名.成员名例10.4假设有如下说明:structstudent{longnum;charname[10];struct{intyear,month,day;}birth;intscore;}li,hu,tao;以下均正确的引用语句:(1)scanf(“%ld”,&li.num);成员运算符(2)hu.birth.year=1973;(3)sum=sum+tao.score;(4)tao.num++;说明:多级引用成员运算符逐级引用其最底层的成员。三.结构体变量的初始化形式:结构体变量名={初值表};例10.5
6、structstudent{longnum;charname[10];struct{intyear,month,day;}birth;intscore;}li,ma={2001,“马红”,{1973,5,6};602};有分号无分号第四节结构数组当结构变量有许多时,用结构数组来表示,数组的每一个元素均为结构体.一.结构体数组的定义形式:结构类型数组名[常量表达式]例10.6struct{char*name;longnum;charsex;struct{intyear,month,days;}birth;}p[30];即描
7、述如下:namenumsexyearmonthdaysp[0]p[1]…p[29]birth二.结构体数组的引用形式:数组名[下标].成员名例7设有如下数组说明语句#defineF“%s,%s”struct{char*code;char*name;floatprice;char*place;struct{intyear,month,day;}validay;}x[100];则for(i=0;i<=100;i++)if(x[i].validay.year<=2001)printf(F,x[i].code,x[i].na
8、me);功能:输出药品库中有效期为2001年之前所有药品清单.三.结构数组的初始化形式:数组说明亮={{初值表1},{初值表2}….{初值表n}};例10.8structstudent{longnum;charname[10];struct{intyear,month,day;}birth;intscore;}p[3