• 构造类型——联合类型


    联合类型和结构体类型基本相似,包括定义方式,声明方式都是一样的。

    关键字 union

    #include <stdio.h>
    #include <stdlib.h>
    union Un {
        char c;
        short s;
        int i;
    }un1,un2;
    
    int main(void)
    {
        system("pause");
        return 0;
    }

    union 的特点是所有的成员共享一块内存。对比struct 的每一个成员都有自己的一块内存。

    union它的内存模型是 □□□□

    c的空间放在第一个字节,s的空间放在前两个字节,c的空间和s的空间是从起始地址重合。i也是从第一个空间开始放。

    所以4个字节的空间,放下了 c,s,i。

    这种存放空间的特点是 :当修改c的时候,第一个字节内的内容就被改变了, 别忘了 第一个字节的内容同样也是s,i的一部分内容。所以当你修改c的时候,s和i的数值也被改变了。

    所以 只要修改一个成员,其他成员也会改变。

    声明联合变量并初始化  

    声明很简单,主要说一些初始化。

    联合的初始化也有特点,因为它其中的所有的成员是共用一块内存,因此初始化的时候不能够对三个数据进行初始化。

    联合的初始化只能初始化一个成员,初始化最大的成员

     

    #include <stdio.h>
    #include <stdlib.h>
    union Un {
        char c;
        short s;
        int i;
    }un1;
    
    int main(void)
    {
        union Un un2 = { 34 };//初始化哪个都行,因为初始化任意一个,其他部分自动初始化为0。
        
        system("pause");
        return 0;
    }

    想初始化哪个成员,就把哪个成员放在union中的最前面。

  • 相关阅读:
    OCP-1Z0-051-V9.02-108题
    以一种访问权限不允许的方式做了一个访问套接字的尝试
    常用的几个官方文档
    OCP-1Z0-053-V12.02-388题
    FusionChart实现奇偶间隔显示
    OCP-1Z0-053-V12.02-138题
    Tcp and Udp NAT 穿越穿透打洞
    flashback database实验(使用lgmnr找出还原时间点)
    flashback table实验(基于undo数据)
    flashback query实验(基于undo数据)
  • 原文地址:https://www.cnblogs.com/dabing0983/p/10542826.html
Copyright © 2020-2023  润新知