联合(union)

2019-01-07  本文已影响0人  nytta

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的属性
上一篇下一篇

猜你喜欢

热点阅读