在我的C代码中,我有这个联盟:
volatile union {
float a3d[32][4][3];
float a2d[32][12];
} virial;
但是我想创建两个缓冲区,以便它们充当上面的联合:
float my_virial_a3d[32][4][3];
float my_virial_a2d[32][12];
那么,我如何将数据从我的三维缓冲区复制到二维,就像一个联盟?
答案 0 :(得分:1)
简单 - 只是威胁两个数组作为一维普通浮点数(其内部结构实际上是这样):
#include <stddef.h>
((main))()
{
float my_virial_a3d[32][4][3], my_virial_a2d[32][12];
for(size_t i = 0; i < sizeof(my_virial_a3d) / sizeof(float); ++i)
*((float*)my_virial_a2d + i) = *((float*)my_virial_a3d + i);
}