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

时间:2016-03-21 08:42:17

标签: c arrays compiler-errors

我设置了一种结构类型:

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

此行收到cast specifies array type错误:

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

此代码行的最佳修复方法是什么?问题是什么?

2 个答案:

答案 0 :(得分:1)

<basicHttpBinding> <binding name="Binding1" maxReceivedMessageSize = "1000000"> <security mode="None" /> </binding> </basicHttpBinding> nw.snt都是指针数组。要“深度复制”整个数组,您可能需要使用source->snt

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

memmove(nw.snt, source->snt, MAX_LINE_LENGTH * sizeof (char *));

答案 1 :(得分:0)

您将snt声明为指向charactes的指针数组。你可能意味着它是一个字符数组,或指向一组字符的指针:

char snt[MAX_LINE_LENGTH];    // array of characters to hold your sentence
char *snt;                    // pointer to array of characters

当您将元素分配给兼容元素时,不需要强制转换,并且此处认为强制转换是有害的,因为您会阻止编译器向您发出警告。请注意,您不会复制字符,只会使两个结构指向同一个句子。

作为一个练习,我把这件事告诉你。