在C中将数组划分为更短的数组

时间:2010-09-13 12:02:19

标签: c

在C程序中我有这个变量:

float (*data)[3];
data = (float (*)[3])calloc(ntimes, sizeof(float[3]));

稍后会被初始化。之后我想将“数据”中的所有信息传递给我定义的一组名为“data_i”的ntimes变量:

typedef float (*el_i)[3];
el_i data_i[NTIMES];  // NTIMES is a constant with value "ntimes"
for (i = 0; i < ntimes; i++) data_i[i] = (float (*)[3])calloc(1, sizeof(float[3]));

然后我尝试将信息从“数据”传递到所有“data_i”的

    for (i = 0; i < ntimes; i++){
      data_i[i][0][0]=data[i][0];
      data_i[i][0][1]=data[i][1];
      data_i[i][0][2]=data[i][2];
    }

你认为data_i [i] [0] [0]是正确的语法吗?这是更好的方式来传输或复制信息吗? 感谢

2 个答案:

答案 0 :(得分:2)

如果你总是使用calloc 1数组,那么无论如何都只能用0索引数组指针。不接受float*然后省略一个索引步骤的原因是什么?

typedef float *el_i;
el_i data_i[NTIMES];
for (i = 0; i < ntimes; i++) data_i[i] = (el_i)calloc(1, sizeof(float[3]));

for (i = 0; i < ntimes; i++){
  data_i[i][0]=data[i][0];
  data_i[i][1]=data[i][1];
  data_i[i][2]=data[i][2];
}

我真的没有看到这个的全部目的。

答案 1 :(得分:0)

一次3个花车,一切都很好。

如果您认为您的程序运行缓慢,请确保在尝试“让它变得更好”之前,复制是造成缓慢的原因。