取消引用指向结构的指针

时间:2013-08-17 11:12:56

标签: c pointers data-structures linked-list singly-linked-list

我最近遇到过这个问题。

创建了单链表,列表的节点看起来像

struct node
{
    int data;
    struct node* link;
};

列表是使用add at head创建的,列表看起来像

100-> 200-高于300

显示功能写为

void display(struct node* head)
{
    while(head != NULL)
    {
        printf ("%d", *head);
        head=head->next;
    }
}

这是访问列表中数据的合法方式吗?我把它绑在GCC编译器上,它发出警告但它有效。在某些情况下是否会导致错误?

1 个答案:

答案 0 :(得分:5)

printf ("%d", *head);

应该是

printf ("%d", head->data);

然后编译器警告应该消失。你的代码是偶然的 (或者像@alk评论的意外)  因为datastruct node的第一个成员。它可能取决于struct参数的来源 传递给printf函数。无论如何,这是错误的。