C 分配给类型‘时不兼容的类型;字符*[80]’;从类型&x2018;字符**’;错误

C 分配给类型‘时不兼容的类型;字符*[80]’;从类型&x2018;字符**’;错误,c,linux,compiler-errors,C,Linux,Compiler Errors,当我编译下面一行时,它从类型“char**”中得到“分配给类型“char*[80]”时不兼容的类型”错误。“nw”和“source”都是句子(来自句子结构类型)。 这个问题与其他问题不同,因为它处理的是二维数组,其他地方没有讨论过 nw.sentence = source->sentence; 句子结构类型为: typedef struct { char *sentence[MAX_LINE_LENGTH]; } sentence; 谢谢。假设你有申报单 int *x; c

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

nw.sentence = source->sentence;
句子结构类型为:

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

谢谢。

假设你有申报单

int *x;
 char *sentence[MAX_LINE_LENGTH];
char ** sentence;
这意味着
x
具有类型
int*
,换句话说,是指向int的指针。在相同的逻辑中,声明

int *x;
 char *sentence[MAX_LINE_LENGTH];
char ** sentence;
这意味着
句子[MAX\u LINE\u LENGTH]
(是
MAX\u LINE\u LENGTH
元素的数组)的每个元素都具有类型
字符*
,换句话说,是指向字符串的指针

总之,
char*句[MAX\u LINE\u LENGTH]
的每个元素都指向一个字符串。这与宣言不同

int *x;
 char *sentence[MAX_LINE_LENGTH];
char ** sentence;

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

假设您有声明

int *x;
 char *sentence[MAX_LINE_LENGTH];
char ** sentence;
这意味着
x
具有类型
int*
,换句话说,是指向int的指针。在相同的逻辑中,声明

int *x;
 char *sentence[MAX_LINE_LENGTH];
char ** sentence;
这意味着
句子[MAX\u LINE\u LENGTH]
(是
MAX\u LINE\u LENGTH
元素的数组)的每个元素都具有类型
字符*
,换句话说,是指向字符串的指针

总之,
char*句[MAX\u LINE\u LENGTH]
的每个元素都指向一个字符串。这与宣言不同

int *x;
 char *sentence[MAX_LINE_LENGTH];
char ** sentence;
因为最后一个是指向字符串指针的指针