C语言 | 联合体(union)、typedef
程序员文章站
2022-07-15 08:50:35
...
一、联合体union
1.联合体含义
- 联合 union 是一个能在同一个存储空间存储不同类型数据的类型;
- 联合体所占的内存长度等于其最长成员的长度倍数,也有叫做共用体;
- 同一内存段可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用;共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖;
- 共用体变量的地址和它的各成员的地址都是同一地址。
2.联合体与结构体
- 结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
- 结构体占用的内存大于等于所有成员占用的内存的总和(存在偏移对齐),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。
union MyUnion
{
int a;
char b;
float c;
};
void main()
{
printf("联合体MyUnion的字节大小为:%d\n", sizeof(union MyUnion));//联合体MyUnion的字节大小为:4
}
二、typedef
- typedef为 c 语言的关键字,作用是为一种数据类型 ( 基本类型或自定义数据类型 ) 定义一个新名字,不能创建新类型。
- 与 # define 不同, typedef 仅限于数据类型,而不能是表达式或具体的值;
- # define 发生在预处理, typedef 发生在编译阶段。
typedef struct student StructStu;
struct student {
char* name;
int age;
char* address;
};
上一篇: C语言联合体union
下一篇: C语言学习总结