嘿所以我理解的错误,每当我尝试做这样的事情:取消引用指向不完全类型(节点)
void swap(struct lnode* n1){
struct lnode*temp = n1->next;
}
我以为我可以有临时指针指向N1->未来但它给了我不完整类型错误的解引用指针。谁能帮我?
感谢
嘿所以我理解的错误,每当我尝试做这样的事情:取消引用指向不完全类型(节点)
void swap(struct lnode* n1){
struct lnode*temp = n1->next;
}
我以为我可以有临时指针指向N1->未来但它给了我不完整类型错误的解引用指针。谁能帮我?
感谢
要访问结构成员像这样的声明是不够的:
struct lnode;
这给你一个不完全类型:编译器现在知道该结构的名称,但不知道哪些字段包含。你可以指向不完整的类型,但是你不能访问它们的成员,计算它们的大小,或者做任何需要知道结构成员的东西。
需要完整的定义。如:
struct lnode
{
struct lnode *next;
/* other fields */
};
你需要有struct lnode
范围的完整的声明。否则, 编译器如何知道在哪里可以找到next
成员?
您的问题表明,编译器不会有什么叶子节点是即非结构叶子节点的全貌知名度。也许你可以多发一点你的代码给我们帮忙。
所以我必须在类的右边定义结构? – Mark
不一定在课堂上,但你需要在你引用'next'或其他成员的地方提供完整的声明,或者需要知道结构的大小。 –