Ciao a tutti,
avrei bisogno di un grosso aiuto riguardante i vari passi che permettono di costruire una lista.
Ho già scritto diversi programmi con l'uso di liste ma diciamo che non mi sono mai fermato a pensare bene al codice, lo davo per scontato e questo è un errore.
Diciamo che ci sono alcuni passaggi che mi sono poco chiari e che spero possiate chiarirmeli.
Dopo aver creato una struttura
per mia comodità rinomino la struttura appena creata in "lista"codice:struct list { int dim; struct list *next; };
ma con questa operazione dico che il tipo lista è un puntatore a se stesso, e francamente non riesco a capire perchè.codice:typedef struct list *lista;
Come primo elemento di una lista non basterebbe scrivere solo
La seconda cosa che non riesco a capire (la più importante) riguarda il processo che mi consente di creare un nuovo elemento della lista.codice:typedef struct list lista l1;
Mettiamo il caso che io lavori all'interno della funzione creaLista e che mi debba creare un certo numero di elementi (passato come parametro).
io dico questo:codice:lista creaLista(int a) { //vario codice... lista l = (lista) malloc (typedef(lista)); // <-- questa è la riga incriminata lista l->next = ...; return ...; }
-dichiaro l che è un puntatore a lista.
-tramite la funzione malloc occupo un certo numero di byte e faccio tornare l'indirizzo del primo byte dello spazio occupato che poi assegnerò a l.
ed adesso?
per quanto ne so io adesso l punta ad una certa locazione, ma come faccio a sapere con certezza che lo spazio riservato da malloc contiene effettivamente una variabile intera ed una puntatore??
Scusate la domanda forse troppo banale, ma non voglio correre il rischio di avere dei dubbi sui puntatori visto che saranno argomento di tutti i giorni.
Devo essere più preparato possibile.
Grazie

Rispondi quotando