2013-11-26 63 views
0

我無法動態聲明2D數組(一個已知大小的維度,其他未知讀取文件以及存儲在整數行中的行數)。類型'char *'分配類型'char * [(sizetype)(NColDataType)]'時的C - 不兼容類型'

int NColDataType = 16; 
char *DataType[NColDataType]; 
DataType = (char *)malloc(sizeof(char)*lines); 

當這個被編譯時,收到3號線以下錯誤:分配給輸入時

不兼容的類型 '字符 * [(的SizeType)(NColDataType)]' 從類型' char *'

我對這裏的問題無能爲力,特別是爲什麼即使這些類型似乎匹配也會引發錯誤。

回答

0

變量DataType是一個指針數組,你試着給它指定一個指針。我想你的意思是做

DataType[0] = malloc(lines); 

或者你想DataType是一個指向數組的指針,就像

char (*DataType)[NColDataType]; 
DataType = malloc(sizeof(DataType[0]) * lines); 
+0

第二屆,像變魔術一樣!謝謝! – StuartKerr

0

DataType是一個指針數組,你不能指定給它。相反,分配給它的元素之一,例如,第一個:

DataType[0] = malloc(sizeof(char)*lines); 

注意,你不需要投的malloc結果值。 sizeof(char)保證是1,所以你不需要它。但是,使用它可以被認爲是自我記錄的。

相關問題