2010-09-13 49 views
0

我有這樣的變量:在C程序分割的陣列成較短的陣列用C

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

後來被初始化。後來我想在「數據」中的所有信息傳遞給所謂的「data_i」我與定義N次變量的意甲:

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「 '' s的

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

如果您始終使用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]; 
} 

我真的不明白這個的全部目的。

+0

使用gcc我在執行此操作時遇到錯誤「賦值中的不兼容類型」 – flow 2010-09-13 12:42:25

0

3個漂浮在一次,這是很好,很好。

如果您認爲您的程序運行緩慢,請在嘗試「使其更好」之前確保複製對慢度負責。