- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第15章 结构体、共用体及枚举
前面我们介绍了C语言的基本数据类型,但是在实际设计一个较复杂程序时,仅有这些基本类型的数据是不够的,有时需要将一批各种类型的数据放在一起使用,从而引入了所谓构造类型的数据,例如前面介绍的数组就是一种构造类型的数据,一个数组实际上是将一批相同类型的数据顺序存放。这里我们还要介绍C语言中另一类更为常用的构造类型数据:结构体、共用体及枚举。
15.1 结构体的概念
结构体是一种构造类型的数据,它是将若干个不同类型的数据变量有序地组合在一起而形成的一种数据的集合体。组成该集合体的各个数据变量称为结构成员,整个集合体使用一个单独的结构变量名。一般来说结构中的各个变量之间是存在某些关系的,例如时间数据中的时、分、秒,日期数据中的年、月、日等。由于结构是将一组相关联的数据变量作为一个整体来进行处理,因此在程序中使用结构将有利于对一些复杂而又具有内在联系的数据进行有效的管理。
15.2 结构体类型变量的定义
15.2.1 先定义结构体类型再定义变量名
定义结构体类型的一般格式为:
struct 结构体名
{
成员表列
};
其中,“结构体名“”用作结构体类型的标志。“成员表外”为该结构体中的各个成员,由于结构体可以由不同类型的数据组成,因此对结构体中的各个成员都要进行类型说明。
例如定义一个日期结构体类型date,它可由6个结构体成员year、month、day、hour、min、sec组成:
struct date
{
int year;
char month;
char day;
char hour;
char min;
char sec;
};
定义好一个结构体类型之后,就可以用它来定义结构体变量。一般格式为:
struct 结构体名 结构体变量名1,结构体变量名2,……结构体变量名n;
例如可以用结构体date来定义两个结构体变量time1和time2:
struct date time1,time2;
这样结构体变量time1和time2都具有struct date类型的结构,即它们都是1个整型数据和5个字符型数据所组成。
15.2.2 在定义结构体类型的同时定义结构体变量名
一般格式为:
struct 结构体名
{
成员表列
}结构体变量名1,结构体变量名2,……结构体变量名n;
例如对于上述日期结构体变量也可按以下格式定义:
struct date
{
int year;
char month;
char day;
char hour;
char min;
char sec;
}time1,time2;
15.2.3 直接定义结构体变量
一般格式为:
struct
{
成员表列
}结构体变量名1,结构体变量名2,……结构体变量名n;
第3种方法与第2种方法十分相似,所不同的只是第3种方法中省略了结构体名。这种方法一般只用于定义几个确定的结构变量的场合。例如,如果只需要定义time1和time2而不打算再定义任何别的结构变量,则可省略掉结构体名“date”。
不过为了便于记忆和以备将来进一步定义其他结构体变量的需要,一般还是不要省略结构名为好。
15.3 关于结构体类型有几点需要注意的地方:
1.结构体类型与结构体变量是两个不同的概念。定义一个结构体类型时只是给出了该结构体的组织形式,并没有给出具体的组织成员。因此结构体名不占用任何存储空间,也不能对一个结构体名进行赋值、存取和运算。
而结构体变量则是一个结构体中的具体对象,编译器会给具体的结构体变量名分配确定的存储空间,因此可以对结构体变量名进行赋值、存取和运算。
2.将一个变量定义为标准类型与定义为结构体类型有所不同。前者只需要用类型说明符指出变量的类型即可,如int x;。后者不仅要求用struct指出该变量为结构体类型,而且还要求指出该变量是哪种特定的结构类型,即要指出它所属的特定结构类型的名字。如上面的date就是这种特定的结构体类型(日期结构体类型)的名字。
3.一个结构体中的成员还可以是另外一个结构体类型的变量,即可以形成结构体的嵌
套。
15.4 结构体变量的引用
定义了一个结构体变量之后,就可以对它进行引用,即可以进行赋值、存取和运算。一般情况下,结构体变量的引用是通过对其成员的引用来实现的。
1.引用结构体变量中的成员的一般格式为:
结构体变量名. 成员名
其中“.”是存取成员的运算符。
例如:time1.year=2006;表示将整数2006赋给time1变量中的成员year。
2.如果一个结构体变量中的成员又是另外一个结构体变量,即出现结构体的嵌套时,则需要采用若干个成员运算符,一级一级地找到最低一级的成员,而且只能对这个最低级的结构元素进行存取访问。
3.对结构体
文档评论(0)