一、共用体
1、什么是共用体
定义:所有成员都使用同一片地址单元
2、如何来定义共用体
格式:
union 共用体类型名称{
成员链表
};
说明:
1)共用体的定义与使用方法与结构体类似
2)结构体当中的各个成员都有属于自己的存储单元,而共用体中的各个成员都共享同一个存储单元。
3)数据类型与存储单元大小的对应关系:
int ----> 4个存储单元(4个字节,32位二进制)
float----->4个存单元(4个字节,32位二进制)
双精度
double---->8个存储单元(8个字节,64位二进制)
单精度
long---->4个存储单元(4个字节,32位二进制)
char ----> 一个存储单元(一个字节,8位二进制)
4)结构体的大小应该等于结构体所有成员的所占存储单元之和
5)共用体的大小等于公用体中最大成员所占存储单元的大小
6)共用体当中,右边是低字节,左边是高字节。
先看一个结构体的案例
#include<stdio.h>
#include<string.h>
typedef struct worker{//定义一个结构体struct 声明结构体 typedef声明定义简单的别名YT
char name[8];
int age;
float height;
}YT;
void main(){
YT W1;
printf("%d",sizeof(W1));
}
共用体案例(内部存储结构)
3、案例
案例一、
#include<stdio.h>
#include<string.h>
typedef union worker{//定义一个公用体union 声明共用体 typedef声明定义简单的别名YT
char name[8];
int age;
int height;//age和height占用同一块存储空间,当age=2时heigth也为2
}YT;
void main(){
YT a;
a.age=2;
printf("%d",a.height);
}
案例二、
#include<stdio.h>
#include<string.h>
typedef union worker{//定义一个公用体union 声明共用体 typedef声明定义简单的别名YT
int n;
char c;
}YT;
void main(){
YT a;
a.c='A';
printf("%d",a.n);
}