美文网首页
联合(union)

联合(union)

作者: nytta | 来源:发表于2019-01-07 21:25 被阅读0次

    union能在同一个内存空间中存储不同的数据类型,当然不是同时都储存各个数据类型。
    如声明一个union

    union hold {
      int digit;
      double bigfl;
      char letter;
    }
    

    当然union跟struct一样,都是可以定义变量,指针和数组的

    union hold fit;
    union hold save[10];
    union hold * pthold;
    

    当定义一个union变量fit时,编译器分配足够的空间以便它能储存union声明中占用最大字节的类型。比如声明的union hold,它占用空间最大的是double类型的数据。
    不过需要注意的是,union只能储存一个值,这一点与结构是不同的。
    初始化union

    union hold vala;
    vala.digit = 2;
    

    或者

    union hold valb = {88};     //初始化union的digit成员
    

    或者使用初始化器

    union hold valc = {
        .digit = 111
    }
    

    如果对一个union里的属性多次初始化值,则最后一次对属性的初始化会覆盖掉之前对其他属性的初始化。

    vala.digit = 2;
    vala.bigfl = 2.2;      //初始化bigfl属性会清除掉digit的属性

    相关文章

      网友评论

          本文标题:联合(union)

          本文链接:https://www.haomeiwen.com/subject/oowprqtx.html