Я пишу функцию, для которой я хочу создать список, который указывает на некоторую структуру данных, которая может быть изменена во время вызова начальной функции.И назвать данные с этим.Но я не знаю, как сделать указатель переменной.Я пытался использовать пустой указатель, но не знаю, как вызвать его с длиной структуры, поэтому будет ошибка, что указатель указывает на пустое пространство (я выделяю пространство).Я искал какую-то статью, но не помог, и я только изучаю C за 3 месяца.
Вот мой код, я разместил часть этого.Есть начальная функция и пустая функция.Я не знаю, как передать размер указателя, чтобы пустая функция могла освободить пространство указателя данных.Надеюсь, вы, ребята, можете помочь, большое спасибо.
typedef struct node{
void *data;
struct node *next,*prev,*head,*tail;
}Node;
typedef Node *List;
void empty_list(List plist){
Node *tmp,*phead;
phead=direct_to_head(plist);
while (phead->next!=NULL) {
tmp=phead->next;
if(tmp->data!=NULL){
free(tmp->data);
tmp->data=NULL;
}
free(phead);
phead=tmp;
}
free(phead);
phead=NULL;
plist=NULL;
}
List init_list(unsigned int count,size_t size){
if(count==0)
fprintf(stderr,"node number can't be zero");
Node *head,*tail;
head=(Node *)calloc(count+2, sizeof(Node));
if(head==NULL){
fprintf(stderr, "No space in initing.");
return NULL;
}
tail=head+count+1;
head->tail=head+count+1;
head->next=head+1;
tail->head=head;
tail->prev=tail-1;
while (count>0) {
head++;
head->data=(void *)calloc(1, size);
if(head->data==NULL){
fprintf(stderr, "No space in initing.");
return NULL;
}
head->head=head-count;
head->tail=tail;
head->next=head+1;
head->prev=head-1;
count--;
}
return (head->head)+1;
}