c语言关键字大全和union关键字

本文介绍了C语言的关键字`union`,详细阐述了共用体的声明与使用,以及与结构体的区别。共用体占用的内存等于最长成员的长度,且不同成员赋值会相互覆盖。理解`union`对于优化内存使用和理解C语言底层机制至关重要。
摘要由CSDN通过智能技术生成

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;

二、共用体和结构体的区别

结构体和共用体的区别在于:

  1. 结构体的各个成员会占用不同的内存,互相之间没有影响;
  2. 共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
  3. 共用体和结构体都是由多个不同的数据类型成员组成,
    在任何同一时刻, 共用体只存放了一个被选中的成员, 而结构体的所有成员都存在。
  4. 对于共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了,
    对于结构体的不同成员赋值是互不影响的。
  5. 结构体占用的内存大于等于所有成员占用的内存的总和.

总结-为什么要用Union

union虽然可能有多个数据成员,但是它数据成员的存储空间是一样的,所以无论union有多少个数据类型变量,但是实例化后,union的变量的长度是这个union里最长的数据类型的长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值