我想在列表中编写一个包含列表的程序。 所以有list.h文件:
typedef struct node {
void *ptr;
struct node *next;
struct node *prev;
} NODE;
typedef struct list {
struct node *head;
struct node *tail;
int size;
char name[MAX_SIZE_NAME];
} LIST;
首先我有列表,例如list_。 现在我分配5个元素。
在每个节点中我想分配一个新列表。 我尝试使用这段代码:
if (list_->head->next == list_->tail) {
list_ins_next(list_);
ptr = list_->tail->prev;
ptr->ptr = malloc(sizeof(LIST));
ptr->ptr->head = malloc(sizeof(NODE));
抱歉,我没有太多的编程经验,但如果你能帮助我会很棒
错误是:解除引用'void *'指针
答案 0 :(得分:2)
ptr->ptr->head = malloc(sizeof(NODE));
相当于:
(*(ptr->ptr)).head = malloc(sizeof(NODE));
表达式*(ptr->ptr)
无效,因为您无法取消引用void*
。
您需要一个类型为LIST*
的指针来取消引用它,然后使用该对象的head
成员。
使用:
((LIST*)ptr->ptr)->head = malloc(sizeof(NODE));