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