- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一章 结构体及共用体
结构体与共用体
§11.1 结构体类型的定义
11.1.1 概述
在此之前,除数组外的基本变量都是属于非构造类型的数据。数组是一种构造类型数据。本章介绍另两种构造类型的数据——结构体和共用体。
C语言中的结构体相当于其他高级语言中的“记录”,它可以把多种类型的数据组合在一起,构成一个整体,一种新类型的数据,从而适应复杂类型数据的要求。
11.1.2 结构体类型的定义
定义
struct 结构体名
{成员1;
成员2;
......
成员n;
}; /*只定义类型时,最后一行上的“;”不可缺少*/
其中:结构体名称为该结构体标记。
成员称为结构体域(集合称为域表),其构成为“类型名 成员名”,成员名构成规则与变量名相同。
结构体变量的存储空间分配
各个成员所占字节数之和,即是该变量所需字节数。
结构体类型的定义示例见教材P260。
§11.2结构体类型变量的定义
可以用三种方法定义结构体类型变量。
11.2.1 先声明结构体类型,再定义变量
先定义一个结构体类型,其中student为结构体名,如:
struct student /*该类型共包含4个成员,各成员的类型可以不同*/
{int num;
char name[20];
int age;
float score;
}; /*作为类型的定义,此行最后的“;”不可缺少*/
再定义两个属于struct student类型的结构体变量stud1和stud2
struct student stud1,stud2; /*其中“struct student”为结构体类型名*/
这两个结构体变量stud1、stud2在内存中所占字节数均为28(=2+20+2+4)。
说明
定义一个标准类型的变量时,只需指定类型名、变量名即可,如int i,j;
而定义一个结构体变量时,不但要指定结构体类型,而且还必须指明是哪一种具体的结构体类型,如stud1,stud2;(student为具体的结构体名,而struct student整体则代表具体的结构体类型)。
11.1.2 在定义结构体类型的同时定义变量
如:struct student
{int num;
char name[20];
int age;
float score;
}stud1,stud2; /* 定义了两个struct student类型的变量stud1、stud2*/
11.1.3 直接定义结构体类型变量
如:struct /* 结构体名并不出现,而直接定义变量*/
{int num;
char name[20];
int age;
float score;
}stud1,stud2;
与第一种和第二种方法相比,若要再定义一些与stud1、stud2相同的结构体变量时,这种方法显然不方便。
11.1.4 关于结构体类型的几点说明
类型与变量是不同的概念,不能混淆。可以对变量进行存取、赋值等运算;却不能对类型进行这些操作或运算。此外,在编译时只对变量分配空间,并不对类型分配空间。
可以单独使用结构体变量中的成员,其地位和作用相当于普通变量。具体见后。
结构体的成员也可以是结构体变量。
struct date /* 定义一个名为“date”的struct date类型的结构体*/
{int month;
int day;
int year;
};
struct student
{int num;
har name[20];
int age;
struct date birthday; /* birthday成员是一个struct date类型的结构体变量*/
}stud1,stud2; /* 注意,此处用到的struct date类型应当是在此前已经定义的*/
4、结构体变量内部的成员名可以与结构体外的其他变量名相同,但二者代表不同对象。
§11.3 结构体变量的引用
11.3.1 引用形式
结构体变量名.成员名
其中“.”为成员(分量)运算符,其运算级别与结合方向见书P375。
11.3.2 引用原则
不能将一个结构体变量作为整体进行输入和输出,而只能对结构体变量的各个成员进行输入输出。如:上例中可以有stud1.num=10010;stud2.num=20010;
只能对结构体中最低级的成员进行赋值、存取以及运算。若成员本身又属于一个结构体类型,则必须要用若干成员运算符,一级一
您可能关注的文档
- 第五章 针对集团消费进行地推销谈判.doc
- 第五章__程序性知识地学习.ppt
- 第五章 电路板设计规划制作.doc
- 第五章_培训及发展.doc
- 第五届北京别墅设计规划论坛27.ppt
- 第五章~Adapter部分电路研究.doc
- 第五章复习 电流和电路 串联和并联 电流地强弱(B卷).doc
- 第五章 糖友网——我们地家园.doc
- 第五章大学生职业生涯详细规划.ppt
- 第五章薪酬福利管理习题和答案.doc
- 2023军队文职社会公开招聘《戏剧与影视》典型题汇编(含答案).pdf
- 2022最新劳务合同(必备8篇) .pdf
- 2023版材料销售合同标准版简单版样板 .pdf
- 2023年上海市中考数学考前冲刺试卷(含解析) .pdf
- 2023年河南法院检察院招考法律基础知识备考真题 .pdf
- 2022年广东省广州市中考物理一模试卷及答案解析 .pdf
- 2024-2030年中国数字化档案加工行业市场现状调查及发展趋向研判报告.pdf
- 2023-2024学年江苏省徐州市睢宁县九年级上学期期中化学试题 .pdf
- 2024-2025学年人民版高三历史上册期末检测题及答案 .pdf
- 2022年大连大学公共课《C语言》科目期末试卷A(有答案) .pdf
文档评论(0)