《c语言,共用体》课件.pptVIP

  • 31
  • 0
  • 约1.93万字
  • 约 14页
  • 2018-11-12 发布于广西
  • 举报
16(*) 共用体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 1、共用体类型的定义 union [联合体类型名] { 数据类型名1 成员名1; 数据类型名2 成员名2; … … 数据类型名n 成员名n; }; 类型定义不分配内存 ch i f 2000 2001 2002 2003 共占4字节 sizeof(union UData) = sizeof(f) 联合体的大小是成员中占内存最大的成员的大小 union UData { short i; char ch; float f; }; ch i f 2000 2001 2002 2003 2004 2005 2006 2007 共占7字节 struct SData { short i; char ch; float f; }; 16(*) 共用体变量的定义和引用 共用体变量的定义 形式一: union data { short i; char ch; float f; } a, b; 形式二: union data { short i; char ch; float f; }; union data a, b, *p, d[3]; 形式三: union { short i; char ch; float f; } a,b,c; f ch i f ch i a b 共用体变量任何时刻 只有一个成员存在 共用体变量定义分配内存, 长度=最长成员所占字节数 16(*) 共用体变量的引用 共用体变量名.成员名 共用体指针名-成员名 或 (*共用体指针名).成员名 union data { int i; char ch; float f; }; union data a, b, c, *p, d[3]; a.i a.ch a.f p-i p-ch p-f (*p).i (*p).ch (*p).f d[0].i d[0].ch d[0].f 16(*) 共用体变量的赋值 共用体变量的初始化赋值 定义共用体变量时可以对变量赋初值,但只能对变量的一个成员赋初值,不可象结构体变量那样对所有的成员赋初值。 union UData { short i; char ch; float f; }; union UData data = {10}; //10赋给成员i union UData data = {A}; //A赋给成员i,即i的值为65(A的ASCII码) union UData data = {10, A, 12.5}; //错误,{ }中只能有一个值 union UData data = 10; //错误,初值必须用{ }括起来 16(*) 共用体变量的赋值 共用体变量在程序中赋值 定义了共用体变量以后,如果要对其赋值,则只能通过对其成员赋值,不可对其整体赋值。 具有相同共用体类型的变量之间也可以相互赋值。 union UData { short i; char ch; float f; }; union UData data, *p, d[10]; data = {10}; //错误 data = 10; //错误 data.i = 10; //正确,将10赋给data的成员i p = data; //p指向data p-f = 12.5; //正确,将12.5赋给data的成员f d[0].ch = A //正确,将A 赋给d[0]的成员ch union UData data1 = {10}, data2; data2 = data1; //正确 16(*) 几点说明: 由于共用体变量的各成员共享同一地址的内存单元,所以在对其成员赋值的某一时刻,存放的和起作用的将是最后一次存入的成员值 对共用体变量的某个成员赋值时,也改变了其它成员的值,因为它们共享一个内存地址。 由于共用体变量所有成员共享同一内存空间,因此共用体变量与其各成员的地址相同。 union UData data; data.i = 10; data.ch = A; data.f = 12.5; 则data.f的值才是有效的成员的值。 union UData data

文档评论(0)

1亿VIP精品文档

相关文档