C语言共用体union
发布日期:2021-05-20 05:49:00 浏览次数:11 分类:精选文章

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

10.共用体union

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

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

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

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

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

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

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

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

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

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

10.3 共用体的主要用途

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

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

上一篇:C语言大小端模式
下一篇:C语言宏

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月12日 22时19分39秒