在C中将三维数组转换为二维数组

时间:2016-04-16 20:45:10

标签: c arrays

在我的C代码中,我有这个联盟:

volatile union {
          float a3d[32][4][3];
          float a2d[32][12];
} virial;

但是我想创建两个缓冲区,以便它们充当上面的联合:

  1. float my_virial_a3d[32][4][3];
  2. float my_virial_a2d[32][12];
  3. 那么,我如何将数据从我的三维缓冲区复制到二维,就像一个联盟?

1 个答案:

答案 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);

}
相关问题