【问题标题】:C - incompatible types when assigning to type 'char *[(sizetype)(NColDataType)]' from type 'char *'C - 从类型 'char *' 分配给类型 'char *[(sizetype)(NColDataType)]' 时不兼容的类型
【发布时间】:2013-11-26 06:11:54
【问题描述】:
我在动态声明二维数组时遇到了麻烦(一个维度已知大小,另一个维度在读取文件之前未知,并且行数存储在整数·lines·中)。
int NColDataType = 16;
char *DataType[NColDataType];
DataType = (char *)malloc(sizeof(char)*lines);
编译后,我在第 3 行收到以下错误:
分配给类型 'char 时的类型不兼容
*[(sizetype)(NColDataType)]' 来自 'char *' 类型
我对这里的问题一无所知,特别是为什么即使类型似乎匹配也会引发错误。
【问题讨论】:
标签:
c
arrays
dynamic
types
malloc
【解决方案1】:
变量DataType 是一个指针数组,您尝试为其分配一个指针。我认为你的意思是做例如
DataType[0] = malloc(lines);
或者你想让DataType成为一个指向数组的指针吗,比如
char (*DataType)[NColDataType];
DataType = malloc(sizeof(DataType[0]) * lines);
【解决方案2】:
DataType 是一个指针数组,你不能分配给它。相反,分配给它的一个元素,例如,第一个:
DataType[0] = malloc(sizeof(char)*lines);
请注意,您不需要转换malloc 的结果值。 sizeof(char) 保证是1,所以你不需要它。但是,使用它可以被认为是自我记录的。