- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 结构体与共用体
将不同类型的数据组合成一个有机的整体。C语言允许用户自定义结构体类型。
struct 结构体名
{成员表列};/*各成员分别进行类型声明*/
例:struct student
{ int num;
char name[20];
char sex;
int age;
};/*定义结构体类型 struct student*/
定义了结构体类型后,就可以定义相应类型的变量,并在其中顺序存放具体的数据,存贮长度为各成员长度之和。
例:struct student stu1,stu2;
结构体成员的引用
成员运算符. 优先级为1级,左结合。
例:stu1.num,stu2.name
注意
(1)类型为概念(框架),变量要分配具体存储空间。
(2)结构体中成员可单独使用,相当于普通变量。
(3)成员也可以是结构体变量。
(4)成员名可以和普通变量名相同,二者代表不同对象。
初始化及输入/输出
例:struct student stu1={30,Liu de hua,M,20};
不能对结构体变量作为一个整体进行输入或输出,因为格式字符都是针对基本类型的,应对各成员分别输入或输出。
例:printf(%d,%s,%c,%d\n,stu1.num,stu1.name,stu1.sex,stu1.age);
scanf(%d%s%c%d,stu2.num,stu2.name,stu2.sex,stu2.age);
结构体数组
如果需要了解一个班学生的基本情况,则应采用结构体数组。
struct 结构体名 数组名[长度];
struct student stu[2];/*2个元素,student类型。*/
struct student stu[2]={{1,Wang,M,20},{2,Li,F, 21}};
结构体指针
结构体变量的指针即该变量起始地址。
struct 结构体名 *变量名;
例:struct student stu1={1,“Wang”,‘M’,20},*p=stu1;
stu1.num等价于(*p).num。为使用方便、直观,推出指向运算符-,其优先级为1级,左结合。(*p).num可用p-num代替,表示引用p所指结构体变量的num成员。
注意
(1)结构体变量、成员、结构体指针均可作为函数实参,用指针效率较高。
(2)指针类型不同,不得互相赋值。如p指向leader[0],与leader[0].num的地址相同,但类型不同。p是结构体类型指针,而leader[0].num的指针类型是整型。
(3)指针的指向需关注,q=p如放在外层循环作初值会出错。
共用体
有时需要使几种不同类型的变量存放到同一段内存单元中。
union 共用体名 /*定义共用体类型*/
{成员表列};
例: union data
{int i;
char ch;
};
定义类型之后,即可定义变量。
union data a;
引用: a.i,a.ch
共用体数据特点
(1)每一时刻只有一个成员起作用,起作用的是最近存放的成员。
(2)共用体变量与成员地址相同。
(3)不能对共用体变量赋值、初始化,也不能作函参、函数返回值,但可以使用指针来完成。
(4)共用体、结构体类型可相互嵌套。
与结构体区别
结构体变量各成员同时存在,顺序存放,其长度为各成员长度之和。
共用体变量各成员同一时刻只有一个成员存在,其长度取决于最长成员的长度。
枚举类型
如果一个变量只取有限个数的值,则可定义为枚举类型。变量的值只限于列举出来的值的范围内。
例:enum color{red,yellow,blue};/*enum color类型*/
enum color i;/*i为枚举型变量,取值是三者之一*/
typedef
用typedef声明别名来代替已有类型名。
例:typedef int INT;/*用INT代表int型*/
int i,j;等价于INT i,j;
(1)习惯上把用typedef声明的类型名用大写字母表示,以便与已有类型区别。
(2)typedef只是对已有类型声明一个类型名,而没有创造新类型。
(3)与#define区别在于是在编译时处理。
(4)使用typedef利于程序通用与移植。
您可能关注的文档
- 2013届中考语文考点知识复习的课件学习.ppt
- 2013年高考新课标Ⅱ卷理综化学试题分析.ppt
- 2013年河北高考录取分数线公布.ppt
- 2013年人教版高中必修2物理6-4万有引力理论的成就的课件学习.ppt
- 2013年物理高考热点预测复习的课件学习:4万有引力定律及其应用.ppt
- 2013年最新初中化学精品教学的课件学习: 燃烧与灭火.ppt
- 2013人教版二年级数学5的乘法口诀.ppt
- 2014高三物理第一轮总复习的课件学习四:曲线运动_万有引力定律.ppt
- 2014届高三《考前三个月》专题复习篇.ppt
- 2014年荷兰表计展览会官方文件.ppt
- (高清版)DB13 5325-2021 生活垃圾焚烧大气污染控制标准.docx
- (高清版)DB13∕T 5348-2021 大丽花脱毒种苗生产技术规程.docx
- (高清版)DB13∕T 5652.7-2023 节水型单位评价导则 第7部分:洗浴场所.docx
- (高清版)DB13∕T 5663-2023 鸟巢蕨设施繁育技术规程.docx
- (高清版)DB13∕T 5706-2023 黄秋葵病虫害综合防控技术规程.docx
- (高清版)DB62∕T 996-2022 绿色食品 双孢蘑菇越冬生产技术规程.docx
- (高清版)DB13∕T 5684-2023 金银花质量调控技术规程.docx
- (高清版)DB13∕T 5699-2023 谷子品种生态适应性评价技术规程.docx
- (高清版)DB13∕T 5341-2021 高水分裹包苜蓿青贮技术规程.docx
- (高清版)DB13∕T 5672-2023 公路路基微型桩加固设计与施工技术规范.docx
最近下载
- 护理不良事件自杀ppt课件.pptx
- 2024年继续教育答案-药学综合知识与技能服务应用.docx VIP
- 2025工会基础知识考试题库(含答案).docx VIP
- 《工会基础知识》考试题库300题(含答案).pdf VIP
- 年产2.5亿袋小柴胡颗粒的车间设计.docx
- 退役军人事务部退役军人培训中心招聘应届毕业生笔试真题2023(含答案).pdf VIP
- 2025年执业药师继续教育2024年执业药师综合知识与技能及服务应用(三)答案.docx VIP
- 2025中考英语作文复习:12个热门写作话题写作指导+满分范文.pdf VIP
- 农村电商直播助力乡村振兴模式研究.docx VIP
- 贵州各地每天日出日落正午时间昼长数据.pdf
文档评论(0)