0

我最近遇到了这个问题。

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

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 编译器联系起来,它发出了警告,但它起作用了。在某些情况下会导致错误吗?

4

1 回答 1

5
printf ("%d", *head);

应该

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

那么编译器警告应该消失。您的代码偶然工作(或如@alk 评论的那样偶然),因为data它是struct node. 这可能取决于如何将结构参数传递给 printf 函数。无论如何,这是错误的。

于 2013-08-17T11:17:24.130 回答