……分配了一个不兼容的指针类型?

Lamuna 2017-04-07 11:20:31

...
void list_all_items(ITEM *HEAD){
ITEM *item = HEAD;
printf("ID\t\tNAME\n");
while(item){
print_item_info(item);
item = item->next;
}
}
...


编译后警告:
assignment from incompatible pointer type [-Wincompatible-pointer-types]
item = item->next;

问题起始点在“=”这里

可是,我只能通过这个方法才能让指针指向链表的下一个地址啊,难道我写的哪里不规范有问题?

请问该如何避免这个警告?如果放任不管会出现什么问题?
...全文
285 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-04-07
  • 打赏
  • 举报
回复
看一下你的数据结构定义
Lamuna 2017-04-07
  • 打赏
  • 举报
回复
引用 4 楼 paschen 的回复:
[quote=引用 3 楼 Lamuna 的回复:] [quote=引用 2 楼 paschen 的回复:] 你看下你的ITEM结构体中,next成员的类型是不是ITEM*类型

typedef struct Item{
  int id;
  char name[255];
  struct Item *next;
}ITEM;
应该就是ITEM吧?[/quote] 那你给的这部分代码应该没问题 你试下:item = (ITEM*)item->next;[/quote] 啊!非常感谢,我找到问题了。 我之前是struct item,后来改成了Struct Item,但是next的部分还是写成了struct item *next,所以错了。 非常感谢指导!
paschen 2017-04-07
  • 打赏
  • 举报
回复
引用 3 楼 Lamuna 的回复:
[quote=引用 2 楼 paschen 的回复:] 你看下你的ITEM结构体中,next成员的类型是不是ITEM*类型

typedef struct Item{
  int id;
  char name[255];
  struct Item *next;
}ITEM;
应该就是ITEM吧?[/quote] 那你给的这部分代码应该没问题 你试下:item = (ITEM*)item->next;
Lamuna 2017-04-07
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
你看下你的ITEM结构体中,next成员的类型是不是ITEM*类型

typedef struct Item{
  int id;
  char name[255];
  struct Item *next;
}ITEM;
应该就是ITEM吧?
paschen 2017-04-07
  • 打赏
  • 举报
回复
你看下你的ITEM结构体中,next成员的类型是不是ITEM*类型

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧