我最近遇到了这个问题。
创建了一个单向链表,列表的节点看起来像
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编译器上,它抛出了一个警告,但它有效。在某些情况下会导致错误吗?
printf ("%d", *head);
应该是
printf ("%d", head->data);
然后编译器警告应该消失。您的代码是偶然的(或偶然,如@alk评论( 因为data
是struct node
的第一位成员。这可能取决于结构参数如何传递给 printf 函数。无论如何,这是错误的。