【问题标题】:incompatible types when assigning to type ‘char *[80]’ from type ‘char **’ error [duplicate]从“char **”类型错误分配给“char * [80]”类型时类型不兼容[重复]
【发布时间】:2016-03-21 05:29:24
【问题描述】:

当我编译以下行时,它会出现“从类型‘char **’分配给类型‘char *[80]’时不兼容的类型”错误。 'nw' 和 'source' 都是句子(来自句子结构类型)。 这个问题与其他问题不同,因为它处理的是其他地方没有讨论过的二维数组。

nw.sentence = source->sentence;

句子结构类型为:

typedef struct {
    char *sentence[MAX_LINE_LENGTH];
} sentence;

谢谢。

【问题讨论】:

    标签: c linux compiler-errors


    【解决方案1】:

    假设你有声明

    int *x;
    

    这意味着x 的类型为int *,换句话说,它是一个指向int 的指针。同样的逻辑,声明

     char *sentence[MAX_LINE_LENGTH];
    

    表示sentence[MAX_LINE_LENGTH] 的每个元素(它是MAX_LINE_LENGTH 元素的数组)的类型为char *,换句话说是一个指向字符串的指针。

    作为结论,char *sentence[MAX_LINE_LENGTH] 的每个元素都指向一个字符串。这与声明不同

    char ** sentence;
    

    因为最后一个是指向字符串的指针。

    【讨论】:

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