【问题标题】:Dereferencing pointer to incomplete type (nodes)取消引用指向不完整类型(节点)的指针
【发布时间】:2012-10-01 13:03:07
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: c pointers dereference


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      struct lnode;
      

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

      需要完整的定义。如:

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

      【讨论】:

        【解决方案3】:

        您需要在范围内拥有struct lnode 的完整声明。不然怎么会 编译器知道在哪里可以找到next 成员?

        【讨论】:

        • 不一定在类中,但您需要在引用 next 或其他成员时提供完整的声明,或者需要知道结构的大小。
        猜你喜欢
        • 1970-01-01
        • 2013-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多