欢迎来到天天文库
浏览记录
ID:59490840
大小:999.00 KB
页数:83页
时间:2020-09-13
《第6章构造数据类型ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章构造数据类型结构体类型联合体枚举类型用typedef定义类型C语言提供了一种聚合数据类型——结构(或结构体,structure),它是由若干相互关联的数据项构成的数据集合。结构体中所含成员的数量和大小必须是确定的,即结构体不能随机改变大小。组成一个结构体的诸成员的类型可以不同,即结构体是异质的。联合(或共用体,union)类型是一种“可变身份”的数据类型,可在不同的时候在同一存储单元里存放不同类型的数据。6.1结构体类型6.1.1结构体类型的定义一般形式:structstudent{charname[20];intorder,i
2、d;intage;charaddress[100];intscore[10];};struct结构体类型名{成员列表;};定义结构体类型时应注意以下几点:①结构体成员可以是任何基本数据类型的变量,如int、char、float和double型等,这些成员的类型可以相同,但往往是不同的。②结构体成员也可以是数组、指针类型的变量。例如:structclist{intcount;char*first;char*last;};③结构体类型可以嵌套定义,即允许一个结构体中的一个或多个成员是其他结构体类型的变量。structid_card{cha
3、rname[30];charsex;charnationality[20];structdate{intyear,month,day;}birthday;char*p_addr;structdatesigned_date;longintnumber;char*office;};structdate{intyear,month,day;};structid_card{charname[30];charsex;charnationality[20];structdatebirthday;char*p_addr;structdatesign
4、ed_date;longintnumber;char*office;};也可以采用另一种形式把各个结构体类型单独定义。④结构体类型定义不允许递归,即:一个结构体类型的成员中不能含有类型为本结构体的变量。例如下面的说明是非法的:structwrong{charname[5];intcount;structwronga;structwrongb;};⑤在同一结构体内各成员的名称不能相同。⑥}后的分号不能省略。6.1.2结构体变量的定义为了使用结构体变量,必须先定义结构体变量。定义结构体变量常用的方法有以下三种:①间接定义:先定义结构体类型
5、,再定义结构体变量。structcoord{floatx;floaty;};structcoordfirst,second;注意,利用此种方法定义结构变量时,关键字struct和结构名必须同时出现,缺一不可。②直接定义:在定义结构体类型的同时定义结构体变量。structcoord{floatx,y;}first,second;③无名定义:当结构体类型和变量同时定义时,可缺省类型名。其一般形式:struct{成员表;}变量名表;例如:struct{floatx,y;}first,second;结构体变量的内部表示定义结构体类型只是声明一
6、种数据类型的“样板”。这种样板是抽象的,还没有实体,不占用内存空间,不能在程序中对结构类型直接进行赋值、存取等操作。结构体变量是实体,占用内存空间,可进行赋值、存取等操作。结构体变量的存储单元依据各个成员在结构中出现的先后次序来分配空间。结构体变量所占空间的大小为结构体中每个成员所占内存空间之和。结构体变量可以嵌套:structrectangle{structcoordtopleft;structcoordbottomrt;}mybox;6.1.3结构体变量的初始化1.结构体变量初始化的一般方式结构体类型结构体变量名={初值表};st
7、ructstudentwho={"Zhanghua",991105,92,91,89,87,94,0.0};2.有聚合成员的结构体变量的初始化为了使层次清晰、增加程序的可读性,往往用花括号将这些聚合类型变量对应的初值整体上括起来。例如,structstudentwho={"Zhanghua",991105,{92,91,89,87,94},0.0};注意:①允许初值赋的个数少于结构体变量中成员的个数,但不允许初值符的个数多于结构体变量中成员的个数。structstudentwho={"Zhanghua",991105,{92,91,8
8、9,87,94}};结构体变量who中成员average就隐含地被初始化为0。②结构变量初始化时,不能在结构体内初始化。③初始化数据的顺序和类型应与定义结构体类型时结构成员的顺序和类型一致。6.1.4结构体变量的成员的访
此文档下载收益归作者所有