zoukankan      html  css  js  c++  java
  • 构造类型——联合类型

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

    关键字 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中的最前面。

  • 相关阅读:
    java前三章总结
    Java入门第二章
    java编程入门小结
    Java入门第二章
    java预习易错点
    计算机基础
    切换卡
    ajax
    水印4
    shuiyin3
  • 原文地址:https://www.cnblogs.com/dabing0983/p/10542826.html
Copyright © 2011-2022 走看看