在结构错误中指向取消引用

时间:2013-02-08 06:07:53

标签: c pointers linked-list dereference circular-list

我有一个创建循环列表的功能,我正在编译问题,不确定它是否是语法,如果有人可以提供帮助,请表示赞赏。

    void CreateCircularList(struct node** listRef, struct node** tailRef)

    {    
    Push(&*listRef, "String 1");
    *tailRef=*listRef;
    Push(&*listRef, "String 2");
    Push(&*listRef, "String 3");
    Push(&*listRef, "String 4");

    *(tailRef->next)=*listRef;

    } 

编译器在最后一行标记错误:

  

“成员引用基类型'结构节点*'不是结构或   联盟“

任何想法为什么?感谢

2 个答案:

答案 0 :(得分:7)

你可能想要

  (*tailRef)->next = *listRef;

作为最后一项任务。

由于tailRef->next是指向指针的指针,因此无法编写tailRef

出于可读性原因,我还建议您只编码Push(listRef, "Some string");而不是Push(&*listRef, "Some string");

答案 1 :(得分:2)

我认为您需要按照以下方式执行此操作

(*tailRef)->next = *listRef;

即获取struct node *所指向的tailref,使用->取消引用以获取struct node * next,然后将其设置为指向的元素到listRef