Creare il primo nodo della lista in C

gloria19881
Nuovamente riscrivo un pezzo di codice in C riguardante la creazione del primo nodo della lista.

struct nodo{
     int  value;
     struct nodo *next;
}
typedef struct nodo Nodo;
Nodo *p;
p=(Nodo*)malloc(sizeof(Nodo));
p->value=10;
p->next=NULL;



Dichiaro una struttura dove al'interno vi trovo un puntatore che nel caso del primo nodo di una lista è il puntatore al secondo nodo e il puntatore fa riferimento ad una struttura simile a quella in cui è contenuto. Volevo capire cosa fanno le tre istruzioni dopo la dichiarazione della struttura. Per quanto riguardo a p->value=10, sto dando il valore del primo nodo = 10 e dichiaro il puntatore= NULL perchè dopo il primo nodo non ci sono altri nodi.
Ho capito che con la scrittura p=(Nodo*)malloc(sizeof(Nodo)); sto allocando memoria per un elemento di tipo Nodo*;

Risposte
apatriarca
malloc alloca un blocco di memoria il cui numero di byte è determinato dal suo unico argomento. In questo caso stai allocando abbastanza memoria per un Nodo (sizeof(Nodo) restituisce la dimensione in byte del Nodo). A questo punto restituisce un puntatore a questo blocco di memoria (è di tipo void*) che l'autore del codice ha convertito ad un puntatore a Nodo (Nodo *). In realtà non era affatto necessario in quanto la conversione da void * a qualsiasi altro puntatore è automatica.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.