我在动态声明2D数组时遇到了问题(一个维度的大小已知,另一个维度在读取文件和存储在整数·行·中的行数之前是未知的)。
int NColDataType = 16;
char *DataType[NColDataType];
DataType = (char *)malloc(sizeof(char)*lines);
当它被编译时,我在第三行收到以下错误:
分配给类型"char"时不兼容的类型*[(sizetype)(NColDataType)]'来自类型'char*'
我不知道这里的问题是什么,特别是为什么在类型似乎匹配的情况下仍会抛出错误。
变量DataType
是一个指针数组,你试图给它分配一个指针
DataType[0] = malloc(lines);
或者是否希望DataType
是指向数组的指针,如
char (*DataType)[NColDataType];
DataType = malloc(sizeof(DataType[0]) * lines);
DataType
是一个指针数组,你不能分配给它。相反,分配给它的一个元素,例如,第一个元素:
DataType[0] = malloc(sizeof(char)*lines);
请注意,您不需要强制转换malloc
的结果值。sizeof(char)
保证是1
,所以您不需要它。但是,使用它可以被认为是自记录的。