A scuola abbiamo fatto le liste, però ci ho capito davvero poco.
Allora, che differenza c'è tra:
e:
Alla dichiarazione di una funzione non ho capito il perchè del ' * ':
Mi potreste fare una breve spiegazione? Grazie
Presuppongo che tu conosca cosa sia
un puntatore e che sai usarlo nella funzione
Allora ... da dove inizio bene partiamo prp dal primo punto che proponi
la prima è una semplice struttura con due elementi e sai che si accede con
struct prodotto c;
c.nome="cassiera 1";
c.prezzo=20;
ok fino a quà normale una semplice struttura
analizziamo la seconda strutture che rappresenta appunto il concetto di
lista
struct elemento{
prodotto Prod;
elemento *succ;
};
proviamo a ricreare la strutture in "memoria"
ti metto in evidenza questo
elemento *succ
struct elemento lista;
lista.Prod=20;
lista.succ.Prod ... cosi non va bene xk è un puntatore alla struttura stessa che avrà al suo interno un elemento e un altro puntatore a struttura e così via quindi nn posso accedere perché in pratica dovrei dirci accedi al puntatore della lista e vai all'elemento Prod (della nostra seconda lista cioè quella "contenuta" nel puntatore)
E tipo immaginare un Blocco composto da 3 piccoli blocchetti e l'ultimo blocchetto contenga altri 3 blocchetti uguali a se stesso e l'ultimo di questo contenga altri 3 blocchetti (uguali al primo blocco come strutture e al 2°)
Risoluzioni per l'accesso
Soluzione 1
n=lista.(*succ).Prod; // n conterra il valore di Prod non della prima lista bensì quella "contenuta nel puntatore"
per questioni di priorità necessita delle parentesi per obbligare a considerare l'asterisco , in questo caso nei confronti del punto
Soluzione 2 (Usare l'operatore)
i=lista.succ->Prod; // quindi equivale a ciò che ho scritto sopra solo evitando le parentesi
Per quando riguarda questa funzione restituisce un puntatore perché probabilmente dovrà essere contenuto in un
nodo della lista.(presumo perché non ho letto il corpo della funzione)
n3.succ=cercaelemento("prova")
elemento *CercaElemento (string x);
//si presume che dovrebbe scorrere la lista