C - 从类型 'char *' 分配给类型 'char *[(sizetype)(NColDataType)]' 时不兼容的类型



我在动态声明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,所以您不需要它。但是,使用它可以被认为是自记录的。

相关内容

  • 没有找到相关文章

最新更新