学习数据结构与算法|结构体与共用体

以下笔记来源于视频:【动画教程】研讨共用体,探究大小端存储模式(C语言)
结构体与共用体 1.结构体 结构体

struct per{ char name; int age; };

结构体中各成员有各自的内存空间,不管结构体中的成员变量是否被使用,C程序都会给它们分配内存
学习数据结构与算法|结构体与共用体
文章图片

2.共用体 为节约内存空间,达到在同一块内存空间中储存不同类型数据的目的,共用体应运而生.
使用共用体将多种不同种类型的变量存放到同一段内存单元
共用体
union persion{ char name; int age; };

共用体中各成员变量共享同一块内存空间, 即共用体在同一时间只能存放一个变量
一个共用体的长度=各成员变量中最宽数据类型的长度
学习数据结构与算法|结构体与共用体
文章图片

共享同一块内存的含义是:
该共用体变量可被赋予任意一种数据类型的值, 但每次只能赋一种值,若赋入新值,则旧值被覆盖
学习数据结构与算法|结构体与共用体
文章图片

学习数据结构与算法|结构体与共用体
文章图片

第一次赋值 Tom.name=‘T’ , 则共用体所在内存空间中存储着 T
第二次赋值 Tom.age=108 , 则共用体所在内存空间中的原值T被108覆盖
学习数据结构与算法|结构体与共用体
文章图片

【学习数据结构与算法|结构体与共用体】计算机存储模式分为:
  1. 大端存储
  2. 小端存储
可使用共用体来判断计算机的存储模式
计算机存储按字节划分,1byte=8bit
学习数据结构与算法|结构体与共用体
文章图片

学习数据结构与算法|结构体与共用体
文章图片

寄存器宽度大于1byte,所以存在如何将多个字节安排进入内存这样的问题, 因此存在大端存储模式和小端存储模式
学习数据结构与算法|结构体与共用体
文章图片

学习数据结构与算法|结构体与共用体
文章图片

x86 ARM DSP均为小端模式
Keil C51 为大端模式
学习数据结构与算法|结构体与共用体
文章图片

ARM可切换大小端模式
学习数据结构与算法|结构体与共用体
文章图片

使用共用体判断计算机存储模式
学习数据结构与算法|结构体与共用体
文章图片

大端模式
左高0x1234右低
c[0]为低地址
c[1]为高地址
学习数据结构与算法|结构体与共用体
文章图片

    推荐阅读