在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]是正确的语法吗?这是更好的方式来传输或复制信息吗? 感谢
答案 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个花车,一切都很好。
如果您认为您的程序运行缓慢,请确保在尝试“让它变得更好”之前,复制是造成缓慢的原因。