c - 取消引用指向不完整类型(节点)的指针

标签 c pointers dereference

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

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

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

谢谢

最佳答案

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

struct lnode;

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

需要完整的定义。如:

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

关于c - 取消引用指向不完整类型(节点)的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12829839/

相关文章:

c++ - 用于访问 auto 成员的正确运算符 (.) 或 (->)

c++ - 在同一头文件中定义外部变量

c - 不将空格识别为循环中的字符?

c - 什么时候在 C 中释放动态分配的 pthread_t 指针?

c : gets() and fputs() are dangerous functions?

特定位大小的 C++ 指针

c - 在 c 中访问/使用 void 指针时出错

c - C 中的嵌套结构和指针

c - 如何取消引用 strlen 中的 void 指针?

c - 如何在函数中使用 realloc() 并访问值?