【问题标题】: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,所以你不需要它。但是,使用它可以被认为是自我记录的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2013-04-01
        相关资源
        最近更新 更多