2012-10-10 34 views
1

嘿所以我理解的错误,每当我尝试做这样的事情:取消引用指向不完全类型(节点)

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

我以为我可以有临时指针指向N1->未来但它给了我不完整类型错误的解引用指针。谁能帮我?

感谢

回答

2

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

struct lnode; 

这给你一个不完全类型:编译器现在知道该结构的名称,但不知道哪些字段包含。你可以指向不完整的类型,但是你不能访问它们的成员,计算它们的大小,或者做任何需要知道结构成员的东西。

需要完整的定义。如:

struct lnode 
{ 
    struct lnode *next; 
    /* other fields */ 
}; 
0

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

+0

所以我必须在类的右边定义结构? – Mark

+0

不一定在课堂上,但你需要在你引用'next'或其他成员的地方提供完整的声明,或者需要知道结构的大小。 –

0

您的问题表明,编译器不会有什么叶子节点是即非结构叶子节点的全貌知名度。也许你可以多发一点你的代码给我们帮忙。

相关问题