c中共用体简谈

来源:互联网 发布:mac office 2011 汉化 编辑:程序博客网 时间:2024/05/20 22:29
共用体   P319-P324
共用体与结构体的区别:
    结构体定义一个由多个数据成员组成的特殊类型,而共用体定义了一块所有数据成员共享的内存。
共用体的概念:
    共用体,又名联合体。它将不同类型的变量存放到同一段内存单元中,即共用体在同一时刻只能有一个值,属于某一个数据成员。由于所有成员位于同一块内存,因此共用体的占用空间大小就等于最大成员的大小。
    定义的一般形式:
        union 共用体名
        {
          成员列表
        }变量列表;
eg:
    union DataUnion
    {
      int iint;
      char cChar;
      float fFloat;
    }variable;    //定义共用体变量
ps:共用体变量variable的大小就和float类型的大小相等。
共用体的引用
共用体变量定义完成后,就可以引用其中的成员数据进行使用。
引用的一般形式:
    共用体变量.成员名:
eg:
    variable.iint;
    variable.cChat;
PS:不能直接引用共用体变量,如printf("%d",variable);
共用体变量的初始化
对共用体变量初始化时,只需要一个初始化就足够了,其类型必须和共用体的第一个成员的类型相一致。
    eg: union DataUnion Union={97};
如果共用体的第一个成员是一个结构体类型,则初始化值中可以包含多个用于初始化该结构的表达式。
warning:可以试试看将共用体的第一个设为int,第二个设为数组,第三个设为结构体类型,看看输出结果,并改变顺序再次查看,思考原因(提示:不同类型分配的存储空间不同)
共用体类型的数据特点:
    同一个内存段可以用来存放几种不同类型的成员,但是每一次只能存放其中一种,而不是同时存放所有的类型。即共用体中,只有一个成员起作用,其他的成员不起作用。
    共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。
    共用体变量的地址和它的各成员的地址是一样的。
    不能对共用体变量赋值,也不能企图引用变量名来得到一个值。


枚举类型
一个枚举变量包含一组相关的标识符,其中每个标识符都对应一个整数值,称为枚举常量。
    eg:enum Colors(Red,Green,Blue);
其中Colors就是定义的枚举类型变量,在括号中的第一个标识符对应着的数值0,第二个对应于1,以此类推。
在枚举类型中,每个标识符都必须是唯一的,而且不能采用关键字或当前作用域内的其他相同的标识符。在定义枚举类型的变量时,可以为某个特定的标识符指定其对应的整形值,紧随其后的标识符对应的值依次加1,eg:enum Colors(Red=1,Green,Blue);



0 0
原创粉丝点击