- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 155
第九章 结构和联合
日常生活中要处理的数据往往不是由单一类型的数据构成。例如,一个学生的基本信息就是由姓名、学号、性别、出生日期、所在院系、专业、班级等基本“数据项”共同构成。每个基本数据项都具有自己的属性(名称、数据类型、长度等)。
人们常常需要对由若干不同属性的数据项所组成的整体数据进行组织和处理。但由于各数据项的属性不尽相同,所以用数组亦不能有效地对其进行组织和处理。为此,C语言提供了与数组类型不同的另一种构造类型 —— 结构类型。
§9.1 结构类型和结构变量
和数组相似,结构也是拥有若干分量的一种构造类型。但和数组不同的是,结构的各个分量可以分别具有不同的数据类型。结构的每一个分量都称为是该结构的一个“成员”。结构成员的数据类型可以是基本数据类型,也可以是指针、数组或其他结构类型。结构类型的定义形式是:
struct 结构类型名
{
类型1 成员1;
类型2 成员2;
┇
类型n 成员n;
};
例如:
struct date
{
int year;
unsigned short month;
unsigned short day;
};
在这个定义中,定义了一个新的数据类型date ,这是一个结构类型,共有三个成员,分别是year、month和day。每个成员都有自己的数据类型,比如month的数据类型是无符号短整型。
定义了结构类型之后,我们便可以用其来定义相应的结构变量。可以采用以下三种方法来定义结构变量。
1.先定义结构类型再定义结构变量
首先定义一个结构类型(如上面的date),然后再用其来定义结构变量。定义形式为:
struct 结构类型名 变量1,变量2,…,变量n;
例如:
struct date d1,d2;
便定义了两个date型的结构变量d1和d2。同前面介绍的变量一样,每个结构变量所需的存储空间大小也是由其类型决定的。如上面d1和d2所需的存储空间大小为sizeof(struct date)个字节。
注意,在用这种方法定义结构变量时,“struct”和“结构类型名”部分均不能省略。通常我们将程序中所用到的所有结构类型都在程序的头部或某一个头文件中集中定义。然后再根据需要用上述方法定义相应的结构变量。
注意,定义结构类型时并不产生存储分配,只有在定义结构变量时才涉及到存储分配。
2.在定义结构类型的同时定义结构变量
我们可以在定义结构类型的同时再定义相应的结构变量。例如:
struct student
{
long num;
char name[21];
char sex;
unsigned short age;
unsigned class_num;
char come_from[31];
float average_score;
} student1,student2;
它的作用是定义了一个结构类型student,然后紧接着又定义了两个该类型的结构变量student1和student2。
3.直接定义结构变量
此种方法和上面第二种方法类似,只不过没有定义结构类型名。其形式为:
struct
{
类型1 成员1;
类型2 成员2;
┇
类型n 成员n;
} 变量1,变量2,…,变量n;
例如:
struct
{
char name[21];
unsigned short age;
char sex;
} p1,p2,p3;
定义了三个结构变量p1,p2,p3。但由于没有定义相应的结构类型,所以如果以后想再定义一个同类型的结构变量p4的话,上述语句还要重写一遍。再者,当结构的类型发生变化时,结构变量的定义也需重写。因此我们不提倡用这种办法来定义结构变量,除非编程者清楚地知道以后不会再用到该结构类型。
上面我们介绍了结构类型及结构变量的定义方法。此外,一个结构的成员也可以是另一个结构。例如:
struct date
{
int year;
unsigned short month;
unsigned short day;
};
struct person
{
char name[21];
char sex;
struct date birthday; /* 结构person的成员birthday又是另一个结构date */
char department[81];
};
§9.2 访问结构成员
在定义了一个结构变量之后,便可以访问这个变量的成员。引用方式为:
结构变量名.成员名
这里,“.”称为“成员运算符”。例如:
struct date d1,d2;
d1.year=2002;
d1.month=12;
d1.day=25;
d2.year=d1.year;
d2.month=d1.month;
d2.day=d1.day;
prin
您可能关注的文档
最近下载
- 《心理健康讲座》ppt课件(图文).pptx
- 初中英语话剧7-8个人物的剧本.doc VIP
- 鲁教版五四制八年级上册生物 第七单元 第一章 动物的主要类群 练习题(无答案).doc VIP
- [人教版小学五年级上册美术教案.doc VIP
- 《中华人民共和国放射性污染防治法》知识培训.pptx VIP
- 二年级上册劳动技术教案(详).docx VIP
- 第2课 使用数字设备 教案 义务教育人教版信息科技三年级全一册.docx VIP
- DLT5161表格大全(电气装置安装工程质量检验和评定规程).pdf VIP
- 初中数学综合实践活动课教学策略研究.pptx VIP
- 六年级语文上册第二单元教材分析+说课.pptx VIP
文档评论(0)