欢迎来到天天文库
浏览记录
ID:50352387
大小:497.00 KB
页数:95页
时间:2020-03-08
《C语言程序设计实例教程(第2版)丁爱萍第10章 结构体和共用体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章结构体和共用体10.1结构体类型10.2共用体习题1010.1结构体类型在C语言中,结构体(structure)类型是将若干个类型相同或不同的数据组合成一个有机的集合。例如,一个学生的记录需包括学号、姓名、性别、年龄和地址等成员。这样就可以将学号、姓名、性别、年龄和地址等成员组合起来定义为一个结构体变量,共同说明一个学生的信息。10.1.1结构体类型定义并不是只有一种结构体类型,用户可以根据具体情况,自己定义一种新的数据类型,只要结构体类型名不同,就是不同的数据类型。用户可以使用自己定义的或是他人提供的结构体类型来定义变量。使用结构体
2、变量前,要先定义该结构体类型,再定义结构体变量,然后才能对结构体变量进行操作。结构体类型定义的一般格式为struct结构体名{类型标识符成员名列表;类型标识符成员名列表;类型标识符成员名列表;};例如,定义一个结构体structstudent类型:structstudent{intnum;/*学号*/charname[20];/*姓名*/charsex;/*性别*/intage;/*年龄*/floatscore;/*成绩*/charaddr[30];/*地址*/};其中,struct是关键字,不能省略。student是定义的结构体类型名。结构
3、体中的每一项数据,称为结构体“成员”(member)或“分量”。注意,结构体中的成员也可以是某种结构体类型。“结构体”在大多数资料中被称为“结构”。10.1.2结构体变量的定义、引用和初始化1.结构体变量的定义结构体类型变量的定义与其他类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,因此,结构体类型变量的定义形式就增加了灵活性,共计有3种形式,分别介绍如下。(1)先定义结构体类型,再定义结构体类型变量。例如:structstu/*定义学生结构体类型*/{charname[20];/*学生姓名*/charsex;/*性别*/
4、longnum;/*学号*/floatscore[3];/*三科考试成绩*/};structstustudent1,student2;/*定义结构体类型变量*/首先定义了一种新的数据类型称为是structstu类型,或称为结构体stu类型。这种类型的变量共有4个成员(或分量)。然后定义了2个structstu类型的变量,分别是student1和student2。student1和student2在内存中共占用37个字节的内存空间。其结构体变量的存储情况如图10.1所示。图10.1结构体变量的存储情况(2)定义结构体类型的同时定义结构体类型变量
5、。例如:structstudent{intnum;/*学号*/charname[20];/*姓名*/charsex;/*性别*/intage;/*年龄*/charaddr[30];/*地址*/}student1,student2;也可以再定义如下变量。structstudentstudent3;用此结构体类型,同样可以定义更多的该结构体类型变量。(3)直接定义结构体类型变量。例如:struct{charname[20];/*学生姓名*/charsex;/*性别*/longnum;/*学号*/floatscore[3];/*三科考试成绩*/}p
6、erson1,person2;/*定义该结构体类型变量*/用此方法虽然比较简洁,但是此法由于无法记录该结构体类型,因此除直接定义外,不能再定义该结构体类型变量。注意,在实际应用中经常会出现一个数组的成员是另一个结构体变量的情况,例如:structdate/*日期结构*/{intmonth;/*月*/intday;/*日*/intyear;/*年*/};structstudent{intnum;/*学号*/charname[20];/*姓名*/charsex;/*性别*/intage;/*年龄*/structdatebirthday;/*成员是
7、另一个结构体变量*/charaddr[30];/*地址*/}student1,student2;变量student1和student2的内部存储情况如图10.2所示。图10.2变量student1和student2的内部存储情况2.结构体变量的引用在C语言中对结构体变量进行操作时,除了可以对相同类型的结构体变量进行整体赋值外,不可以对一个结构体变量进行整体赋值。要对一个结构体变量进行操作,其引用的格式为结构体变量名.成员名“.”是“成员运算符”(分量运算符)。结构体变量的引用分3种情况。(1)一般情况下,不能将一个结构体变量作为整体来引用,只
8、能引用其中的成员。若定义的结构体类型及变量如下。structdate{intyear;intmonth;intday;}time1,time2;则变量time1和t
此文档下载收益归作者所有