欢迎来到天天文库
浏览记录
ID:60773767
大小:167.50 KB
页数:35页
时间:2020-02-03
《第十四章结构体与共用体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十四章结构体与共用体14.1结构体我们可以通过前面学习过的数组,来构造若干个相同类型的数据的集合。当需要使用不同的数据类型进行构造数据集合时,我们可以使用结构体。一个结构体可以由若干个成员组成,不同的结构体可以根据需要,选择不同的成员组成。对于某一具体的结构体类型,成员的数量必须固定,结构体中各成员在内存中占据连续的存储单元,这两点均与数组相同。不过,在结构体中各成员可以具有不同的数据类型,而数组中每个元素都是相同数据类型,这是数组与结构体最重要的区别。例如可以通过结构体来构造学员的档案信息,假如包括如下数据项:姓名(name):字符串性别(sex):字符型年龄(age)
2、:整型总分(score):实数我们可以将这4个成员组成一个名为student的整体,这就构成了结构体类型。一.结构体类型的说明结构体类型说明的一般形式如下:struct结构体名{类型名1成员名1;类型名2成员名2;……类型名n成员名n;};说明:struct是结构体类型说明的关键字,结构体名以及成员名都是用户自定义的标识符。结构体名用来唯一标识该结构体,可以省略不写。结构体中所含的成员个数,根据需要可以是任意多个。结构体中的成员名可以和程序中的其他变量名同名,不同结构中的成员也可以同名。结构体说明要以分号(;)结尾。例14.1构造一个结构体,用来说明上面的学员档案信息。st
3、ructstudent{charname[10];charsex;shortintage;floatscore;};在本例中student是结构体,结构体包含了4个成员变量。结构体类型所占的存储单元数是该结构体类型中所有成员占用的存储单元数的总和。例如上述student结构体占用了17个字节的内存空间(name占10个字节,sex占1个字节,age占2个字节,score占4个字节),在内存中各个成员的内存地址是连续的,内存单元分配如下图所示:namesexagesorce结构体可以嵌套说明,即在结构体说明里再说明另外一个结构。例14.2structstu{charname[
4、10];charsex;structdate{intyear;intmon;intday;}birthday;intage;floatscore;};二.定义结构体类型的变量、指针变量和数组定义结构体类型变量、指针变量和数组有以下多种方式。(1)直接在结构体类型说明之后定义结构体变量。例如:例14.3structstudent{charname[10];charsex;intage;floatscore;}s1,*ps,stu[3];本例中在说明结构类型structstudent的同时,定义了一个结构体变量s1,一个基类型为结构体类型的指针变量ps和有三个元素的结构体数组
5、stu[3]。结构体变量中的各成员在内存中按说明中顺序依次排列。具有这一结构类型的变量只能存放一组数据(即一个学生信息)。如果要存放多个学生的数据,就要使用结构体数组。例14.3中,数组stu可以存放三个学生的信息,它的每个元素都是一个structstudent类型的变量;ps为基类型structstudent结构类型的指针变量,ps可以指向任意structstudent类型的变量。如可以ps赋值:ps=&s1;以让ps指向s1结构体变量。(2)在说明结构体类型时,不指定结构体名,而直接定义结构体变量、数组和指针。例如:例14.4struct{charname[10];ch
6、arsex;intage;floatsorce;}s1,*ps,stu[3];本例中,省去了结构体名称,而是直接在说明结构体时定义结构体变量、数组和指针,该例中除了没有结构体名外,其他均与(1)中相同。这种情况是,只能用该结构体类型定义一次变量、数组和指针。(3)先说明结构体类型,再进行变量的定义。这种方法可以在以后的程序中多处定义变量。例如:例14.5structstudent{charname[10];charsex;intage;floatscore;};structstudents1,*ps,stu[3];本例中先说明了structstudent结构体类型,然后再通
7、过structstudent这个结构体类型来定义、指针和数组。可以把structstudent当作普通的数据类型来理解。在该结构体类型说明后,其他地方都可以用structstudent来定义变量。作为结构体类型,struct必须与结构体标识名共同来说明不同的结构类型。不能只写结构体标识名student而省略struct,因为student不是类型标识符。由关键字struct和student一起才能唯一地确定所说明的结构体类型。(4)使用typedef说明一个结构体类型名,再用新类型名来定义变量。例如:例14.6ty
此文档下载收益归作者所有