Search code examples
arraysclistmemoryallocation

how does malloc produce an element of a list in C?


This is a code from my programming with C course that prints a list, using ADT structs.

typedef struct list{
    int data;
    struct list *next;
}list;

int is_empty(const list *l){
    return(l==NULL);
}

void print_list(list *h, char *title){
    printf("%s\n", title);
    while(h!=NULL){
        printf("%d :", h -> data);
        h = h -> next;
    }
}

int main()
{
    list list_of_int;
    list* head = NULL;
    head = malloc(sizeof(list));
    printf("size of the list = %lu\n",sizeof(list)); //this has to be an unsigned long
    
    head -> data = 5;
    head -> next = NULL;
    
    print_list(head,"single element list");
    printf("\n\n");
    return 0;
}

My question is, how we used malloc() and the memory it created to create the list pointer head?


Solution

  • The purpose of malloc is "making" legal space and providing a pointer to it.
    The following lines in your code make sure that legal space contains values which make a node.

    This might seem short, but that's it.
    (And I think you confirmed that you now understand. Otherwise I would consider it too short to be polite myself.)