共用体和枚举类型基础知识_第1页
共用体和枚举类型基础知识_第2页
共用体和枚举类型基础知识_第3页
共用体和枚举类型基础知识_第4页
共用体和枚举类型基础知识_第5页
已阅读5页,还剩10页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、共用体和枚举类型基础知识C程 序 设 计CONTENTS 共用体类型 枚举类型 总结共用体1.共用体l 构造数据类型,也叫构造数据类型,也叫联合体联合体l 用途:用途:使几个不同类型的变量共占一段内存使几个不同类型的变量共占一段内存( (相互覆盖相互覆盖) ) 共用体类型的定义共用体类型的定义 union 共用体类型名共用体类型名 数据类型名数据类型名1 成员名成员名1; 数据类型名数据类型名2 成员名成员名2; 数据类型名数据类型名n 成员名成员名n;union UData short i; char ch; float f;chifsizeof(union UData) = sizeof(

2、f) 共用体的大小是共用体的大小是成员中占内存最成员中占内存最大的成员的大小大的成员的大小 chi共占共占7字节字节struct SData short i; char ch; float f; 共用体类型变量的定义共用体类型变量的定义形式一形式一:union data short i; char ch; float f; a, b;形式二形式二:union data short i; char ch; float f; ; union data a, b, *p, d3;形式三形式三:union short i; char ch; float f; a,b,c;共用体共用体变量任何时刻变量任

3、何时刻只有只有一个成员一个成员存在存在共用体共用体变量定义变量定义分配分配内存内存, ,长度长度= =最长成员最长成员所占所占字节数字节数1.共用体 共用体变量的引用共用体变量的引用共用体变量名共用体变量名. .成员名成员名共用体指针名共用体指针名-成员名成员名 或或 ( (* *共用体指针名共用体指针名).).成员成员名名 a.i a.ch a.fp-i p-ch p-f(*p).i (*p).ch (*p).fd0.i d0.ch d0.f1.共用体 共用体变量的初始化赋值共用体变量的初始化赋值 定义共用体变量时可以对变量赋初值,但定义共用体变量时可以对变量赋初值,但只能对变量的一个成员赋

4、初值只能对变量的一个成员赋初值,不,不可像结构体变量那样对所有的成员赋初值。可像结构体变量那样对所有的成员赋初值。 union UData short i; char ch; float f;union UData data = 10; /10赋给成员赋给成员iunion UData data = A; /A赋给成员赋给成员i,即,即i的值为的值为65(A的的ASCII码)码)union UData data = 10, A, 12.5; /错误,错误, 中只能有一个值中只能有一个值union UData data = 10; /错误,初值必须用错误,初值必须用 括起来括起来1.共用体1.共用

5、体 几点说明:几点说明: (1 1)由于共用体变量的各成员共享同一地址的内存单元,所以在对其成员赋值)由于共用体变量的各成员共享同一地址的内存单元,所以在对其成员赋值的某一时刻,的某一时刻,存放的和起作用的将是最后一次存入的成员值。存放的和起作用的将是最后一次存入的成员值。 (2 2)对共用体变量的某个成员赋值时,也改变了其它成员的值,因为它们共享)对共用体变量的某个成员赋值时,也改变了其它成员的值,因为它们共享一个内存地址。一个内存地址。 (3)由于共用体变量所有成员共享同一内存空间,因此共用体变量与其各成)由于共用体变量所有成员共享同一内存空间,因此共用体变量与其各成员的地址相同。员的地址

6、相同。 union UData data;data.i = 10; data.ch = A; data.f = 12.5; /则则data.f的值才是有效的成员的值。的值才是有效的成员的值。union UData data;data.i = 10; data.ch = A; /则则data的成员的成员i的值将变为的值将变为65(A的的ASCII码值)码值)union UData data; /则则&data与与&data.i、&data.ch、&data.f均相同均相同枚举类型2. 枚举类型 如果一个变量只有几种可能的值,则可定义成枚举类型。所谓如果一个变量只有

7、几种可能的值,则可定义成枚举类型。所谓“枚举枚举”,顾名思义,顾名思义,就是把这种类型数据可取的值一一列举出来。,就是把这种类型数据可取的值一一列举出来。一个枚举型变量取值仅限于列出值的范一个枚举型变量取值仅限于列出值的范围围。enum 枚举类型名枚举类型名 枚举元素表枚举元素表;由多个标识符组成,标识符之间用逗号分开 定义枚举类型:定义枚举类型:enum weekday sun, mon, tue, wed, thu, fri, sat;定义枚举类型变量:定义枚举类型变量:enum weekday today, nextday;enum weekday sun, mon, tue, wed,

8、 thu, fri, sat today, nextday;取值取值枚举类型的定义形式为:枚举类型的定义形式为:2. 枚举类型enum weekday sun, mon, tue, wed, thu, fri, sat today, nextday;0123456运行结果:运行结果:today = 0 C C编译对枚举元素实际上按编译对枚举元素实际上按整型常量整型常量处理,当遇到枚举元素列表时,编译处理,当遇到枚举元素列表时,编译程序就把其中程序就把其中第一个标识符赋第一个标识符赋0 0值,第二、三、值,第二、三、个标识符依此赋个标识符依此赋1,2,1,2,。 2. 枚举类型 enum wee

9、kday sun = 7, mon = 1, tue, wed, thu, fri, sat;定义枚举类型的好处:定义枚举类型的好处: 用标识符表示数值增加了程序的可读性用标识符表示数值增加了程序的可读性 清晰清晰不清晰不清晰 可限制了变量的取值范围可限制了变量的取值范围 如如today只能取只能取sunsat中的值中的值 注意:注意:枚举元素是常量,在程序中不可对它赋值总结3.总结结构体、共用体及枚举类型都是用户自定义的数据类型,它们均属于构造数据类型,是用户定义新数据类型的重要手段。结构体和共用体有很多的相似之处,它们都由成员组成。成员可以具有不同的数据类型。成员的表示方法相同。都可用间接和直接两种方式作变量说明。在结构体中,各成员都占有自己的内存空间,一个结构体变量的总长度等于所有成员长度之和。在共用体中,所有成员不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论