【问题标题】: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;
因为最后一个是指向字符串的指针。