Vi avrei postato il codice, purtroppo però non cel'ho sottomano.
Domani vi posto tutto.
Buona serata!
Vi avrei postato il codice, purtroppo però non cel'ho sottomano.
Domani vi posto tutto.
Buona serata!
Scusa Downloader se uso il tuo post ma mi sembra un buon punto di partenza per fare qualche domanda sul passaggio di un * o **.
Dunque se ho bisogno di passare, come nel tuo caso, una struct la passo tramite il uo puntatore.
Quindi per esempio(nel main):
int man(){
struct miaStruct * s;
....
funz(s);
}
dove funz è:
void funz(struct miaStruct* str){
}
funz elabora nella struttura.
Ora il mio appunto da fare è questo (correggetemi se sbaglio, grazie!).
Nel caso in cui devo elaborare con gli elemnti della struct (quindi gli elemnti che accedo con str->el) Va bene passare unicamente il puntatore alla struct alla funzione funz.
Però nel caso in cui devo agire proprio sulla struct, ovvero sul *s, per esempio con questa funzione(lasciate perdere la possibile utilità è per esempio):
void creaStruct(struct miaStruct **str){
...
*str=(struct miaStruct*)malloc(sizeof(struct miaStruct));
...
}
allora in questo casao ho bisogno di passare il ** a str, perchè non vado a modificare solo gli elementi della struct (raggiungibili beuissimo con il solo *s), ma vado a modificare il *s, dunque lo devo passare per riferimento (se invece di passare un **s passassi solo il *s in creaStruct la malloc funzionerebbe, ma restituirebbe un puntatore che quando esco dalla funzione non posso più "recuperare").
Quello che dico è corretto?
Ecco il codice:
Grazie ancora!codice:void spostaElemento(struct lista **l, int mv) { struct lista *m = *l; while(mv-- > 0) *m = *m->next; } int main() { struct lista *l = creaLista(5); spostaElemento(&l, 2); return 0; }
per weo:
ci sono parecchi giri di parole
bisognerebbe provare a farlo girare per esserne certi