在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/