C 取消对不完整类型(节点)的引用指针
嘿,所以每当我尝试做这样的事情时,我都会遇到这个错误:C 取消对不完整类型(节点)的引用指针,c,pointers,dereference,C,Pointers,Dereference,嘿,所以每当我尝试做这样的事情时,我都会遇到这个错误: void swap(struct lnode* n1){ struct lnode*temp = n1->next; } 我以为我可以让临时指针指向n1->next,但它给了我指向不完整类型错误的解引用指针。有人能帮我吗 谢谢您需要在作用域中完整声明struct lnode。否则怎么办 编译器知道在哪里找到下一个成员?要访问结构的成员,这样的声明是不够的: struct lnode; 这给了您一个不完整的类型:编译器现在知
void swap(struct lnode* n1){
struct lnode*temp = n1->next;
}
我以为我可以让临时指针指向n1->next,但它给了我指向不完整类型错误的解引用指针。有人能帮我吗
谢谢您需要在作用域中完整声明
struct lnode
。否则怎么办
编译器知道在哪里找到下一个成员?要访问结构的成员,这样的声明是不够的:
struct lnode;
这给了您一个不完整的类型:编译器现在知道结构的名称,但不知道它包含哪些字段。您可以有指向不完整类型的指针,但不能访问它们的成员、计算它们的大小或执行任何需要了解结构成员的操作
需要一个完整的定义。例如:
struct lnode
{
struct lnode *next;
/* other fields */
};
您的问题表明编译器不了解lnode是什么,即不了解struct lnode的全貌。可能您可以发布更多的代码供我们帮助。不一定在类内,但您需要在引用
next
或其他成员时提供完整声明,或者需要知道结构的大小。