Newsgroup: it.comp.lang.c
Titolo: Puntatori e Niubbo

Salve a tutti,
premetto che sonon un completo niubbo in quanto a puntatori...
So che i puntatori sonon delle variabli che anzichè puntare ad un valore ben
definito, puntano ad un indirizzo di memoria...ma...
qualcuno potrebbe cortesemente spiegarmi in termini pratici che vantaggi
traggo ad usare 'sti benedetti puntatori (magari con un esempio reale)
grazie e scusate la niubagine...

 traggo ad usare 'sti benedetti puntatori (magari con un esempio reale)
Prima prova a cercare qualche tutorial su internet (google?) e magari 
prendere un libro. Non e' per fare il saccente, e' solo che, se per ogni 
argomento di base trattato mille volte in giro per internet, uno viene a 
chiedere qua...
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Linux registered user 299762 @ Linux registered machine 213003

 
Il primo vantaggio che mi viene in mente, anche se forse non il più 
importante, è quello che permette la modifica dei parametri passati ad 
una funzione.
Come saprai in C il passaggio dei parametri ad una funzione avviene per 
valore, ossia la funzione  opera su una copia dei parametri passati che 
poi vengono distrutti al momento dell'uscita dalla funzione. Un esempio. 
Considera il seguente main :
#include <stdio.h>
void swap (int a, int b);
int main ()
{
	int a = 5;
	int b = 6 ;
 
	printf ("\n a = %d, b = %d", a, b);
	swap (a,b);
	printf ("\n a = %d, b = %d", a, b);
	return 0;
}
Stampa prima due valori interi a e b e poi richiama una funzione swap 
che dovrebbe invertire i due valori per ristamparli con il nuovo contenuto.
Se implemento la funzione come :
void swap (int a, int b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
	return;
}
i valori invertiti riguarderanno la coppia di variabili a e b che sono 
un duplicato (visibile solo alla funzione) di a e b del main, dopodichè 
le due variabili verranno distrutte rendendo inutile lo scambio. Quindi, 
per il main, a e b saranno sempre le stesse e sarà stampato ambedue le 
volte a = 5, b = 6.
Se però implemento la swap così (modificando opportunamente anche il 
prototipo di funzione) :
void swap (int* a, int* b)
{
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
	return;
}
e la chiamata nel main come :
swap (&a, &b);
allora alla funzione passo i puntatori delle variabili a e b che mi 
dicono dove sono allocate le variabili a e b, permettendomi di 
modificarli (non di modificare una loro copia) e quindi rendendo la 
modifica effettiva anche per il main.
Spero di non averti confuso ulteriormente le idee.
Se ti serve aiuto posta
Ciao
Giovanni

 >
<cut>
ti ringrazio per la disponibilità ! non esiterò a postare qualora avessi
qualche altro dubbio.

 una funzione.
Oltre a questo fondamentale vantaggio, un altro consiste nell'uso che i 
puntatori hanno per realizzare e gestire strutture *dinamiche* come, per 
esempio, le liste.
Ciao,
Dan


Tramite i puntatori puoi simulare la chiamata per riferimento (che 
altrimenti nel C non esisterebbe) e puoi concatenare liste e alberi.
P.S
Se hai difficoltà a comprendere i puntatori ti capisco, c'ho messo una 
settimana
-- 
Zarathustra
(18/22 PO 80 B/S; S)
Parkpre, LeeCougan and Eleven munito