C语言共用体,共用体内部存储结构

一、共用体

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);
}

在这里插入图片描述

发布了26 篇原创文章 · 获赞 23 · 访问量 1970

猜你喜欢

转载自blog.csdn.net/qq_44757034/article/details/104674566