C++中并集中的两个数组
Two arrays in a union in C++
是否可以在这样的联合中共享两个数组:
struct
{
union
{
float m_V[Height * Length];
float m_M[Height] [Length];
} m_U;
};
这两个数组共享相同的内存大小,还是其中一个更长?
两个数组都需要具有相同的大小和布局。当然如果使用m_V
初始化任何内容,则对m_M
的所有访问都是未定义行为;例如,编译器可能会注意到m_V
已更改,并返回一个较早的值,即使您通过CCD_ 4对元素进行了修改。我实际上使用了一个编译器在遥远的过去这样做了。I将避免访问联合不可见,例如通过传递对m_V
的引用和对CCD_ 6具有相同的功能。
隐式保证它们在内存中的大小相同。编译器不允许在2D数组或1D数组中的任何位置插入填充,因为所有内容都必须与sizeof
兼容。
[当然,如果你向m_V
写入并从m_M
读取(反之亦然),你仍然是类型punning,这在技术上调用了未定义的行为。但那是另一回事。]
相关文章:
- 将fold表达式与std::一起用于两个元组
- 如何在C++中比较两个char数组
- 在c++中获取两个大int,并将它们存储在数组中
- 如何以优化的方式同时迭代两个间距不相等的数组
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 可以将两个相同类型的连续数组视为一个数组吗?
- C++递归来决定数组中的两个值
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 按 Tab 单步执行两个控制组
- 如何检查两个元组的所有成员是否不同
- C 通过随机选择其元素从两个元组制成元组
- 如何将两个元组作为C 的参数发送
- 对于同一循环的这两个连续组,是否有更有效的解决方案
- 在 C++11 中加入两个元组
- 将两个双数组集组合为一个查找其并集和交集的最简单方法
- 如何创建一个在 C++11 (STL) 中压缩两个元组的函数
- 快速实现两个 8 位数组的协方差
- 如何绑定两个元组
- 将一个16位整数复制到一个两字节数组