C语言union的用法
union在C中本质上是一个结构体,用法和struct相似,用
union 名称 {
//... 成员
};来声明
类型使用时,要在名称前加上关键字union
union 类型名称 变量名称;
在调用时用后缀表达式expression.identifier的形式来调用成员:
a.member1 = 10; // a为union
p->member1 = 20; // p为union的指针
但有一些不同点:
1. union,顾名思义,就是多个成员共用一块内存。在编译时会选取成员中长度最长的来声明。也就是说在如下与程序片段中:
union a { //声明了三个成员,但是长度不一(后面sizeof的结果不同机器结果不同,但double肯定是最长的),于是编译器会选取double的长的作为union a的长度
int a1; // sizeof(int) = 4
float a2; // sizeof(float) = 8
double a3; // sizeof(double) = 16
};也就是说,上述union声明在内存中等同于
struct a {
double a3;
};
2. 根据第一条的特点,在对union成员进行赋值后,要注意使用时一定要调用赋值过的成员。
c语言,union有什么用
union是一种数据类型,在一段物理空间内可以存储你定义的不同的几个数据类型的一种。目的是节省空间和创建多个变量的花销。比如union{inti;doublej;}u;这个变量u为8个字节(int:4字节double:8字节)这时候你可以用u.i存储int类型数据或者用u.j存储double类型数据切换使用时后者数据会覆盖前者(因为共享一段内存)
C++的struct,enum,union与C语言有何区别
enum是枚举,就是某个变量的值是能够列举的,比如,星期的话就每周1到7,月的话就1到12、而struct的话是对于某个变量是有很多数据类型构成一个总体的,比如学生这个变量,他需要学号,姓名,年龄,性别等等,这个时候就需要定义结构体了。而uninon的话呢,其中定义的变量都只占一个内存。。。

