C++ union联合体用法_C++内存共用机制与字节序判断技巧

admin 百科 18
联合体是一种特殊复合类型,所有成员共享同一内存空间,大小等于最大成员长度。定义方式类似结构体,但成员从同一地址开始存储。例如:union Data { int i; float f; char str[4]; }; 使用时同一时间只能安全访问一个成员,写入一个成员会覆盖其他成员的值。如Data data; data.i = 10; cout

C++ union联合体用法_C++内存共用机制与字节序判断技巧-第1张图片-佛山资讯网

联合体(union)是C++中一种特殊的复合数据类型,它允许在同一个内存位置存储不同的数据类型。所有成员共享同一块内存空间,因此联合体的大小等于其最大成员所需的字节长度。这种机制在处理内存共用、类型转换和底层系统编程时非常有用,比如用于判断机器的字节序(endianness)。

联合体的基本用法

联合体的定义方式与结构体类似,但所有成员从同一地址开始存储:

union Data {
    int i;
    float f;
    char str[4];
};

登录后复制

使用示例:

Data data;
data.i = 10;
cout << "整型值: " << data.i << endl;

data.f = 2.5; // 覆盖之前的i值
cout << "浮点值: " << data.f << endl;

登录后复制

注意: 同一时间只能安全访问一个成员。写入一个成员后读取另一个会导致未定义行为,除非用于特定类型重解释(如类型双关)。

立即学习“C++免费学习笔记(深入)”;

利用联合体判断字节序

小端(Little-Endian)系统将低位字节存放在低地址,大端(Big-Endian)则相反。联合体可结合类型双关来检测当前平台的字节序:

标签: c++联合体 内存共用 字节 工具 c++ 作用域

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~