|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2001
Città: Partinico(PA)-Torino
Messaggi: 2885
|
Dubbio di C...
Dunque ho trovato in un esercizio una funzione dichiarata in questo modo:
int leggifile(char *nomefile, Tree **root)... non riesco a capire come mai mette i due asterischi...non dovrebbe usarne solo uno?ha qualke particolare funzionalità?? Poi volevo chiedervi: ma nel return come espressione si può utilizzare anke una funzione?? x esempio return leggi(......)???e in questo caso a che servirebbe?? Grazie mille!
__________________
Main: Barton 2500@3200+ Asus A7N8X-dlx 2*512 DDRPowercolor 9800Pro Maxtor 80GB sATA + Seagate 160GB pATA LCD Acer AL1721 Epson C62 Antec T.P. 430w Tin.it ADSL Muletto: Pentium4 1800 Notebook: Idea Progress P4 Auto e moto d'epoca
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì...quello che segue il return è una normale espressione e può contenere qualsisi chiamata a funzione...
Per il doppio * sincramente non capisco... Con doppio asterisco puoi passare un vettore di puntatori, ma non mi sembra questo il caso... |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Probabilmente il doppio puntatore server per poter usare l'argomento per ritornare un puntatore alla radice dell'albero creato.
Forse se mostro come viene usato si vede meglio: Tree* root; // qui root contiene pattume int err = leggifile( "file.dat" , &root ); // ora root contiene un puntatore all'albero Avendo passato un puntatore a root questo puo' essere modificato dalla funzione con un "valore di ritorno". Il fatto che si usi in questo modo invece che con una dichiarazione del tipo int leggifile( char* , Tree* ) ( e quindi venga usata dopo cosi': Tree root; int err = leggifile( "file.dat" , &root ); ) sta nel fatto che per strutture pesanti di solito di manipolano tramite puntatori. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Giusto...non ci avevo pensato perchè io lo passerei per riferimento quel parametro...
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2001
Città: Partinico(PA)-Torino
Messaggi: 2885
|
Ragazzi: scusatemi ma ci ho capito poco....nello stesso esercizio la chiamata di funzione è:
x=leggifile(nomefile, &root) ...quindi è una chiamata normale...intanto il programma funziona perfettamente... poi ce n'è un'altra pure: int insert(TREE **, int) e la chiamata è x=insert(&root, dato).... non riesco a capire....
__________________
Main: Barton 2500@3200+ Asus A7N8X-dlx 2*512 DDRPowercolor 9800Pro Maxtor 80GB sATA + Seagate 160GB pATA LCD Acer AL1721 Epson C62 Antec T.P. 430w Tin.it ADSL Muletto: Pentium4 1800 Notebook: Idea Progress P4 Auto e moto d'epoca
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ti faccio un esempio...
Tree *root; ... ... ... spostaSx(&root); ... ... ... int spostaSx(Tree **t) { //questo è solo un codice di esempio if((*t)->sx) { (*t) = (*t)->sx; return 1; } return 0; } Dentro la funzione t è un puntatore ad un puntatore ad una istanza di tipo Tree... Quindi all'interno della funzione *t è il puntatore ad una istanza di tipo Tree... (*t)->dato, (*t)->sx, (*t)->dx sono i membri del Tree puntato oppure (*(*t)).dato, (*(*t)).sx, (*(*t)).dx Viene passato in questo modo per ritornare al chiamante l'eventuale cambiamento della posizione puntata da root... |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2001
Città: Firenze - Nosgoth
Messaggi: 7333
|
il mio prof all'uni c'ha insegnato a programmare coi doppi puntatori, quindi io lo trovo del tutto normale.
In quel modo è anche + pericoloso, perchè col doppio puntatore ti puoi modificare la variabile senza che te ne avevi voglia...
__________________
Xbox GamerTag: Falux || Psn: Falux79 || -=Krynn=- |
|
|
|
|
|
#8 | |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Quote:
|
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:08.










Main: Barton 2500@3200+ Asus A7N8X-dlx 2*512 DDRPowercolor 9800Pro Maxtor 80GB sATA + Seagate 160GB pATA LCD Acer AL1721 Epson C62 Antec T.P. 430w Tin.it ADSL Muletto: Pentium4 1800 Notebook: Idea Progress P4 








