本文共 570 字,大约阅读时间需要 1 分钟。
(1) 共用体 (union) 和结构体 (struct) 在类型定义、变量定义上非常相似。
(2) 根本区别是:结构体类似一个"包裹",其中各个成员占据内存的不同单元,只是被打包在一起称为结构体;而共用体中的成员则占据同一内存单元,存在着一种多义性,更像是一块可以被不同方式解读的"硬盘"。
(3) 共用体的本质是对同一内存空间的二进制数据进行不同的解读方式。
(4) "联合体"这个名字不太好,现在用"共用体"更准确。
(5) 用 sizeof 计算共用体的大小,其实取的是占用内存最大的成员的大小,这样才能保证存下的空间足够容纳所有成员。
(6) 共用体内存对齐问题不存在,因为它本质上就是一个内存单元,不管你如何访问,都从同一个地址开始。
(1) 操作语法上基本相同,包括定义类型、声明变量、访问成员都非常相似。
(2) 本质区别在于:结构体是多个独立内存单元的集合,每个成员都有自己独特的地址空间,而共用体只是对一个内存单元的多重解读方式。
(1) 用在面对同一内存块需要不同的解读方式时。
(2) 在C语言中,虽然可以通过指针或强制类型转换实现类似的功能,但共用体更简单直观,更便于理解和使用。
转载地址:http://myvhz.baihongyu.com/