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在C中本质上是一个结构体,用法和struct相似,用来声明类型使用时,要在名称前加上关键字unionunion 类型名称 变量名称;在调用时用后缀表达式expression.identifier的形式来调用成员:但有一些不同点:union,顾名思义,就是多个成员共用一块内存。在编译时会选取成员中长度最长的来声明。也就是说在如下与程序片段中:
也就是说,上述union声明在内存中等同于 2. 根据第一条的特点,在对union成员进行赋值后,要注意使用时一定要调用赋值过的成员。
C语言UNION语句?
这里有一个概念,就是整型数据占用几个字节并且是如何存储的
union的定义表明:变量i占用4个字节,c与变量i的头一个字节共用一个单元
a.i=0x1234;则变量i存储的4个字节按照地址递增顺序为:0x34,0x12,0,0,是先存储最低位字节然后是次低位字节、次高位字节和高位字节这个顺序
因此c被赋值为0x34,即16*3+4=52
c语言,union有什么用?
union是一种数据类型,在一段物理空间内可以存储你定义的不同的几个数据类型的一种。目的是节省空间和创建多个变量的花销。比如union{inti;doublej;}u;这个变量u为8个字节(int:4字节double:8字节)这时候你可以用u.i存储int类型数据或者用u.j存储double类型数据切换使用时后者数据会覆盖前者(因为共享一段内存)