| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  09-02-2002, 00:02 | #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 | 
|   |   | 
|  09-02-2002, 01:11 | #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... | 
|   |   | 
|  09-02-2002, 02:16 | #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. | 
|   |   | 
|  09-02-2002, 02:19 | #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...
		 | 
|   |   | 
|  09-02-2002, 09:52 | #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 | 
|   |   | 
|  09-02-2002, 12:03 | #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... | 
|   |   | 
|  11-02-2002, 22:12 | #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=- | 
|   |   | 
|  11-02-2002, 23:10 | #8 | |
| Bannato Iscritto dal: Jul 2000 Città: Malo (VI) 
					Messaggi: 1000
				 | Quote: 
 | |
|   |   | 
|  12-02-2002, 08:42 | #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: 15:08.









 
		 
		 
		 
		









 
  
 



 
                        
                        










