在C程序中,我有以下变量:

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


后来被初始化。之后,我想将“数据”中的所有信息传递给我定义的一系列ntimes变量“ data_i”:

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]是正确的语法?这是进行信息传输或复制的更好方法吗?
谢谢

最佳答案

如果始终精确地调用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];
}


我真的看不到这的全部目的。

关于c - 在C中将数组划分为较短的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3700198/

10-11 15:22