使用结构不兼容的指针类型错误
发布时间:2020-12-16 09:52:00 所属栏目:百科 来源:网络整理
导读:我是编程新手.我正在努力学习C和指针,但它给了我很多麻烦. 尝试实现单链表时出现以下错误.我在网上搜索,我找不到像我这样的错误的人,或者也许我根本无法理解我的问题. 以下是我收到的错误: 警告:初始化’NODE *’的指针类型不兼容 ??????(又名’struct nod
我是编程新手.我正在努力学习C和指针,但它给了我很多麻烦.
尝试实现单链表时出现以下错误.我在网上搜索,我找不到像我这样的错误的人,或者也许我根本无法理解我的问题. 以下是我收到的错误: 警告:初始化’NODE *’的指针类型不兼容 NODE* temp = (*l)->head; 在main中,我传递了LIST类型变量的地址.因此,我认为我必须取消引用’l’,以获取LIST类型所在的地址,然后我必须使用箭头取消引用以获取NODE所在的地址.我在哪里困惑?我非常感谢你的帮助. 您将在下面看到我编写的代码: typedef struct node { int value; struct node* next; }NODE; typedef struct list{ struct NODE* head; }LIST; void insert(LIST** l,int x){ if((*l)->head == NULL){ NODE* new_Node = (NODE*) malloc(sizeof(NODE)); new_Node->next = NULL; new_Node->value = x; } NODE* temp = (*l)->head; while(temp->next != NULL){ temp=temp->next; } NODE* new_Node = (NODE*) malloc (sizeof(NODE)); temp->next = new_Node; new_Node->next = NULL; new_Node->value = x; } int main(){ LIST *l = (LIST*) malloc(sizeof(LIST)); insert(&l,5); return 0; } 解决方法
我想你的问题在这里:
typedef struct list { struct NODE* head; }LIST; 只需在NODE之前删除struct关键字 typedef struct list { NODE* head; }LIST; 要么 typedef struct list { struct node* head; }LIST; 此外,您需要使用NULL初始化头部以使此条件成为工作 if((*l)->head == NULL) ..... 所以当你创建你的列表时,添加l-> head = NULL; LIST *l = malloc(sizeof(LIST)); l->head = NULL; 最后一个(我希望)当你创建你的第一个节点时,你忘记为它分配头部,并返回以便不添加第一个元素两次 if((*l)->head == NULL) { NODE* new_Node = malloc(sizeof(NODE)); new_Node->next = NULL; new_Node->value = x; (*l)->head = new_Node; return; } 而BTW,don’t cast (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |