(已解决)此行(在C中)
(*ptr).firstNode = malloc(sizeof(node));
给出了这个错误:
分配到类型'节点'[错误]不兼容的类型来自类型' void *'
所以,左边的部分是"节点" (这是我创建的结构),为什么这不起作用?有人知道吗?任何帮助将不胜感激,如有必要,将发布结构声明。
的Structs:
typedef struct node{
int idade;
struct node * next;
struct node * prev;
}node;
和
typedef struct {
node firstNode;
node lastNode;
}dll;
伙计们,这个问题已经解决,感谢所有回答的人,将firstNode和lastNode添加为指针会更好吗?或者让它们成为结构本身会更好吗?
我在这里尝试的只是学习如何初始化和处理双链表,这只是列表本身的创建,下一个函数将从顶部和底部删除,等等。
答案 0 :(得分:3)
malloc返回void *
,错误显示为..
从类型分配类型'node'时,[Error]不兼容的类型 'void *'
在左侧需要一个指针,在这种情况下应该是node*
类型。
也许您应该像这样更改结构定义
typedef struct {
node *firstNode; // pointer
node *lastNode;
}dll;
然后(*ptr).firstNode = (node *) malloc(sizeof(node));
就可以了。
答案 1 :(得分:0)
尝试:
typedef struct {
node *firstNode;
node *lastNode;
}dll;
由于评论中的其他人已经注意到,firstNode不是指针,而是结构。