博客
关于我
C语言共用体union
阅读量:677 次
发布时间:2019-03-17

本文共 570 字,大约阅读时间需要 1 分钟。

10.共用体union

10.1 共用体类型的定义、变量定义和使用

(1) 共用体 (union) 和结构体 (struct) 在类型定义、变量定义上非常相似。

(2) 根本区别是:结构体类似一个"包裹",其中各个成员占据内存的不同单元,只是被打包在一起称为结构体;而共用体中的成员则占据同一内存单元,存在着一种多义性,更像是一块可以被不同方式解读的"硬盘"。

(3) 共用体的本质是对同一内存空间的二进制数据进行不同的解读方式。

(4) "联合体"这个名字不太好,现在用"共用体"更准确。

(5) 用 sizeof 计算共用体的大小,其实取的是占用内存最大的成员的大小,这样才能保证存下的空间足够容纳所有成员。

(6) 共用体内存对齐问题不存在,因为它本质上就是一个内存单元,不管你如何访问,都从同一个地址开始。

10.2 共用体和结构体的相同与不同

(1) 操作语法上基本相同,包括定义类型、声明变量、访问成员都非常相似。

(2) 本质区别在于:结构体是多个独立内存单元的集合,每个成员都有自己独特的地址空间,而共用体只是对一个内存单元的多重解读方式。

10.3 共用体的主要用途

(1) 用在面对同一内存块需要不同的解读方式时。

(2) 在C语言中,虽然可以通过指针或强制类型转换实现类似的功能,但共用体更简单直观,更便于理解和使用。

转载地址:http://myvhz.baihongyu.com/

你可能感兴趣的文章
使用 TortoiseGit 时,报 Access denied 错误
查看>>
基于 HTML5 WebGL 的污水处理厂泵站自控系统
查看>>
django-表单之模型表单渲染(六)
查看>>
c++之程序流程控制
查看>>
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
查看>>
有道云笔记 同步到我的博客园
查看>>
李笑来必读书籍整理
查看>>
Hadoop(十六)之使用Combiner优化MapReduce
查看>>
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
查看>>
CoreCLR源码探索(八) JIT的工作原理(详解篇)
查看>>
andriod 开发错误记录
查看>>
C语言编译错误列表
查看>>
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
查看>>
CentOS5 Linux编译PHP 报 mysql configure failed 错误解决办法
查看>>
pycharm新建文件夹时新建python package和新建directory有什么区别?
查看>>
python中列表 元组 字典 集合的区别
查看>>
Android DEX加固方案与原理
查看>>
iOS_Runtime3_动态添加方法
查看>>
Leetcode第557题---翻转字符串中的单词
查看>>
Problem G. The Stones Game【取石子博弈 & 思维】
查看>>