第11章3共用体.pptVIP

  • 0
  • 0
  • 约3.64千字
  • 约 18页
  • 2018-03-07 发布于河南
  • 举报
第11章3共用体

* §11.4 共用体 一、共用体的定义 在 C语言中,共用体表示几个变量共用一个内存单元,这些变量可以是不同的类型。共用体的定义与结构体的定义十分相似,共用体类型的定义形式为: union 共用体名 {成员表列}; 实 型 变 量f 整 型 i ch 1000 地址 union type { int i; char ch; float f; } a; 共用体变量的定义: ① 类型与变量同时给出 union type1 { int i; char ch; float f; } a,b,c; ③ 只给出变量名 union { int i; char ch; float f; } a,b,c; ② 类型与变量分别给出 union type1 { int i; char ch; float f; }; union type1 a,b,c; 结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元。 共用体变量所占的内存长度等于占用内存单元最长的成员的长度。 二 . 共用体变量的引用 只有先定义了共用体变量才能引用它,而且不能直接引用共用体变量,只能引用共用体变量中的成员。例如上面定义a,b,c共用体变量,则可引用: a.i a.ch a.f 三 . 共用体数据类型的特点 1. 每一瞬时只有一个成员起作用; 2. 共用体变量中起作用的成员是最后一次存放的成 员; 3. 共用体变量的地址和它的各成员的地址都是同一 地址; 4. 不能对共用体变量名赋值,也不能企图引用变量名来得到成员的值,又不能在定义共用体变量时对它初始化; 5. 不能把共用体变量作为函数参数,也不能使函数带回共用体变量,但可以使用指向共用体变量的指针; 6. 共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。 二、共用体变量的应用 1. 在数据处理中,常用一个数据空间存放不同的对象。 例如:将人员定义成下面的结构体: struct {long num; char name[20]; char sex; char job; union {int class; char group[20]; }address; } person[10]; 在该结构体变量中,学校人员的号码(num)、姓名(name)和性别(sex)是通用的,而根据职业(job)不同输入不同的单位。如果job项输入s(学生),则应接收一 个班号给class,如果job项输入t(教师),则输入其工作单位给group。例如: … … scanf(%c,person[0].job); if(person[0].job==s) scanf(%d,person[0].address.class); else if(person[0].job==t) scanf(%s,person[0].address.group); … … 2. 便于不同类型间的转换 例1: 将一个整数按字节输出其内容 程序运行结果为: i=3731 ch0=31,ch1=37 ch0=1,ch1=7 main( ) {union int_char {int i; char ch[2]; }k; k.i=14129; printf(i=%x\n,k.i); printf(ch0=%x,ch1=%x\n, k.ch[0],k.ch[1]); printf( ch0=%c,ch1=%c\n, k.ch[0],k.ch[1]); } 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 1 i ch[0] ch[1] 三、共

文档评论(0)

1亿VIP精品文档

相关文档