- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]C语言程序设计-第9章 结构体和共同体
第9章 结构体与共用体 第9章 结构体与共用体 第9章 结构体与共用体 结构体(struct) 共同体(union) 结构体与共用体小结 枚举类型(enum) typedef定义类型 结构体(struct) 结构体类型的定义 1、定义一个结构体类型的一般形式为: struct 结构体名 { 成员说明表列; }; 2、功能:用于描述一个“概念”。(或记录) 如:num name sex score addr 10010 LiHui M 87.5 BeiJing (3)最后一个花括弧的分号不能省略。到此为止是编程者指定的一个新的结构体类型。 结构体变量的存储特点 结构体类型变量的引用及初始化 1、含义:在定义结构体数组时完成数组元素的赋值 2、方法:同基本类型的数组一样,结构体数组的元素在内存中也按顺序存放 指向结构体变量的指针 二、要点: 1、结构体指针变量也必须先赋值后使用。赋值是把结构体变量的首地址赋给该指针,而不是把结构体类型名赋给该指针。 2、有了结构体指针变量,访问结构体变量各成员的方法有如下三种: ① 结构变量.成员名 ② (*结构指针变量).成员名 ③ 结构指针变量-成员名 删除链表结点的过程: 共同体(union) 共同体的含义与定义方法 共同体的存储特点 共同体的使用 共同体的含义与定义方法 一、含义: 几个不同变量共同占用同一块内存空间,只是一种覆盖技术,所谓的共同占用是指这几个变量共同拥有内存的同一个起始地址. 共用相同的存储单元。 共同体的存储特点 1.同一块内存可以存放不同类型的数据,但在某一时刻只能存放其中的一种; 2.共用体变量中起作用的成员是最后一次存放的成员; 3.共用体变量的地址和它的成员的地址是同一个地址; 4.共用体变量不能整体被赋值,也不能给共用体变量赋初值; 5.不能把共用体变量作为函数的参数进行传递,但可以使用指向共用体变量的指针作为函数的参数; 6.结构体类型和共用体类型 可以嵌套使用. 共同体的使用 例9-7:已知字符“0”的ASCII码为十六进制的30,下面程序的输出为: #include stdio.h main() { union { unsigned char c; unsigned int i[4]; }z; z.i[0]=0x39; z.i[1]=0x36; printf(%c\n,z.c); } 例:下列程序的运行结果是什么? main() { union zj {int a; char ch[2]; }au; au.a=298; printf(%d\n%d\n,au.ch[0],au.ch[1]); } 结构体与共用体小结 一、共同点: 都是不同类型数据的集合 二、不同点: 1、结构体中各个成员均在内存中存在, 而共同体中只有一个成员存在于内存中。 2、结构体占用的存储空间是所有成员所占空间的和; =sizeof(结构体名) 而共用体所占内存空间的大小是所有成员中占用存储空间最大的一个成员的占用空间的值。 3、结构体中各个成员相互独立、互不干扰, 共同体中改变一个成员的值,会影响到其它成员的值。 4、结构体与共同体可以互为成员。 枚举类型 1、含义: “枚举类型”是将变量的取值一一列举出来,变量的取值范围只限于列出来的值的范围内. 2、定义方法: enum 枚举类型名{枚举值列表}; 例如: enum weekday {sun,mon,tue,wed,thu,fri,sat}; enum weekday day1,day2; day1=mon; day2=thu; 3、使用要点: 4、应用举例 例如: union date { int i; char ch; float f; }a,b,c; 二、定义形式: union 共用体名 { 成员表列; }变量表列; 1000 1001 1003 1002 ch i f a.i/a.ch/a.f b.i/b.ch/b.f c.i/c.ch/c.f a b c 例如: union date { int i; char ch; float f; }a,b,c;00000000 i[1] ? ... i[2]00000000
文档评论(0)