欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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语言 c语言