繁体   English   中英

在C中将3维数组转换为2维数组

[英]Convert 3-dimensional array to 2-dimensional array in C

在我的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维缓冲区复制到2维?

容易-将两个数组都威胁为一维普通浮点数(它们的内部结构实际上是):

#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);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM