gpt4 book ai didi

在 c 中,cast 指定二维数组的数组类型错误

转载 作者:行者123 更新时间:2023-11-30 15:10:27 24 4
gpt4 key购买 nike

我设置了一个结构类型:

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

这一行出现cast指定数组类型错误:

sentence copySentence(sentence *source) {
sentence nw;
nw.snt = (char *[])source->snt; //Here is the error
return nw;
}

此代码行的最佳修复是什么以及问题是什么?

最佳答案

两者nw.sntsource->snt是指针数组。要“深度复制”整个数组,您可能需要使用 memmove(nw.snt, source->snt, MAX_LINE_LENGTH * sizeof (char *)); .

此外,人们通常更喜欢传递指向结构的指针,而不是直接传递该结构,以减少参数传递的成本。在这种情况下,您可以

sentence *copySentence(sentence *source) {
sentence *nw;
nw = malloc(sizeof (struct sentence));
memmove(nw.snt, source->snt, MAX_LINE_LENGTH * sizeof (char *));
return nw;
}

关于在 c 中,cast 指定二维数组的数组类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36126314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com