union关键字
大家一起加油!~
前言(关键字大全)
前情提示:C语言有许多关键字,以下是列出的关键字:
auto //声明自动变量
break //跳出当前循环
case //开关语句分支
char //声明字符型变量或函数返回值类型
const //声明只读变量
continue //结束当前循环,开始下一轮循环
default //开关语句中的“默认”分支
do //循环语句的循环体
double //声明双精度浮点型变量或函数返回值类型
else //条件语句否定分支(与 if 连用)
enum //声明枚举类型
extern //声明变量或函数是在其它文件或本文件的其他位置定义
float //声明浮点型变量或函数返回值类型
for //一种循环语句
goto //无条件跳转语句
if //条件语句
int //声明整型变量或函数
long //声明长整型变量或函数返回值类型
register //声明寄存器变量
return //子程序返回语句(可以带参数,也可不带参数)
short //声明短整型变量或函数
signed //声明有符号类型变量或函数
sizeof //计算数据类型或变量长度(即所占字节数)
static //声明静态变量
struct //声明结构体类型
switch //用于开关语句
typedef //用以给数据类型取别名
unsigned //声明无符号类型变量或函数
union //声明共用体类型
void //声明函数无返回值或无参数,声明无类型指针
volatile//说明变量在程序执行中可被隐含地改变
while //循环语句的循环条件
一、union是什么?
union 共用体名{
数据类型 成员名;
数据类型 成员名;
...
} 变量名;
举例:
union student{
int age;
char name[];
};
union student a,b,c;
1.共用体声明和共用体变量定义
2. union的成员不可以为静态、引用,如果是自定型态的话,该自定型态成员不可以有建构函式、解构函式或是复制指定运算子。
3. 上述例子定义了一个共用体student,然后创建共用体student的变量a,b,c。但是也可以有例外一种创建声明变量的方法:如下
union student{
int age;
char name[];
}a.b,c;
也可以:
union{
int age;
char name[];
}a.b,c;
二、共用体和结构体的区别
结构体和共用体的区别在于:
- 结构体的各个成员会占用不同的内存,互相之间没有影响;
- 共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
- 共用体和结构体都是由多个不同的数据类型成员组成,
在任何同一时刻, 共用体只存放了一个被选中的成员, 而结构体的所有成员都存在。 - 对于共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了,
对于结构体的不同成员赋值是互不影响的。 - 结构体占用的内存大于等于所有成员占用的内存的总和.
总结-为什么要用Union
union虽然可能有多个数据成员,但是它数据成员的存储空间是一样的,所以无论union有多少个数据类型变量,但是实例化后,union的变量的长度是这个union里最长的数据类型的长度