C++ 联合体Union学习
2023-09-14 09:11:21 时间
https://www.cnblogs.com/fengty90/p/3768840.html
1.Union
当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。
- 1)联合体是一个结构;
- 2)它的所有成员相对于基地址的偏移量都为0;
- 3)此结构空间要大到足够容纳最"宽"的成员;
- 4)其对齐方式要适合其中所有的成员;
#include<iostream> using namespace std; union U1 { int n; char s[11]; double d; }; union U2 { int n; char s[5]; double d; }; int main() { U1 u1; U2 u2; cout<<sizeof(u1)<<'\t'<<sizeof(u2)<<endl; cout<<"u1各数据地址:\n"<<&u1<<'\t'<<&u1.d<<'\t'<<&u1.s<<'\t'<<&u1.n<<endl; cout<<"u2各数据地址:\n"<<&u2<<'\t'<<&u2.d<<'\t'<<&u2.s<<'\t'<<&u2.n<<endl; }
输出:
16 8 u1各数据地址: 0x74fe10 0x74fe10 0x74fe10 0x74fe10 u2各数据地址: 0x74fe08 0x74fe08 0x74fe08 0x74fe08
可以发现u1和u2对象的地址,就是首个元素的地址,并且所有元素的地址都相同!
SGI STL的二级空间配置器的free list用到了它。
https://www.cnblogs.com/fengty90/p/3768840.html
相关文章
- C++模板template的使用
- C/C++基础讲解(十三)之数据结构篇排序大比拼
- C语言/C++常见习题问答集锦(六十三) 之endl引发的思考
- Open3D(C++) 模型滤波——Taubin滤波
- Open3D (C++) 计算点云的归一化协方差矩阵和三维质心
- paip.提升用户体验----c++ 源码字体自定义制造总结
- C++:C++编程语言学习之实现约瑟夫环问题——利用函数嵌套+交互式实现n只猴子选猴王
- C++11 for循环(基于范围的循环)详解
- 硬核 | 学习 Linux/C/C++ 必备!
- c++ 多态 读书笔记
- C/C++字符串比较库函数
- C++11中using的用法学习
- C++ stringstream学习
- 【C++ 科学计算】基于C++深度学习CNN车辆识别(亲测)
- C/C++学习笔记 现代硬件中的并发性
- 学习C++:C++进阶(六)如何在C++代码中调用python类,实例化python中类的对象,如何将conda中的深度学习环境导入C++项目中