1

嘿,所以每当我尝试做这样的事情时,我都会收到这个错误:

void swap(struct lnode* n1){
    struct lnode*temp = n1->next;
}

我认为我可以让临时指针指向 n1->next,但它给了我指向不完整类型错误的取消引用指针。谁能帮我?

谢谢

4

3 回答 3

2

要访问结构的成员,这样的声明是不够的:

struct lnode;

这为您提供了一个不完整的类型:编译器现在知道结构的名称,但不知道它包含哪些字段。您可以拥有指向不完整类型的指针,但您不能访问它们的成员、计算它们的大小或做任何其他需要了解结构成员的事情。

需要完整的定义。如:

struct lnode
{
    struct lnode *next;
    /* other fields */
};
于 2012-10-10T23:14:51.633 回答
0

您的问题表明编译器不知道lnode 是什么,即不是struct lnode 的全貌。也许您可以发布更多代码供我们帮助。

于 2012-10-11T01:12:16.820 回答
0

您需要完整声明struct lnodein 范围。否则,编译器如何知道在哪里可以找到该next成员?

于 2012-10-10T23:13:42.577 回答