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的属性
网友评论