<分区>
当我编译以下行时,出现“从类型‘char **’分配给类型‘char *[80]’时不兼容的类型”错误。 'nw' 和 'source' 都是句子(来自句子结构类型)。 这个问题与其他问题不同,因为它处理的是其他地方没有讨论过的二维数组。
nw.sentence = source->sentence;
句子结构类型为:
typedef struct {
char *sentence[MAX_LINE_LENGTH];
} sentence;
谢谢。
<分区>
当我编译以下行时,出现“从类型‘char **’分配给类型‘char *[80]’时不兼容的类型”错误。 'nw' 和 'source' 都是句子(来自句子结构类型)。 这个问题与其他问题不同,因为它处理的是其他地方没有讨论过的二维数组。
nw.sentence = source->sentence;
句子结构类型为:
typedef struct {
char *sentence[MAX_LINE_LENGTH];
} sentence;
谢谢。
最佳答案
假设你有声明
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;
因为最后一个是一个指向字符串的指针。
关于c - 从类型 ‘char *[80]’ 错误分配给类型 ‘char **’ 时类型不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36123760/