Pagina 1 di 1
PUNTATORI
Inviato: domenica 19 novembre 2006, 17:42
da adsl
Salve a tutti...scusate ma mi occupo da poko di programmazione C...non mi è chiaro il funzionamento dei puntatori...se c e qualcuno che puo spiegarmelo e magari farmi anch e qualche esempio....grazie mille
Re: PUNTATORI
Inviato: domenica 19 novembre 2006, 22:41
da l3on
adsl ha scritto:
Salve a tutti...scusate ma mi occupo da poko di programmazione C...non mi è chiaro il funzionamento dei puntatori...se c e qualcuno che puo spiegarmelo e magari farmi anch e qualche esempio....grazie mille
Puoi pensare al puntatore con un semplice collegamento in ambito grafico (cio'' un qualcosa che punta ad un''altra cosa "fisica").
Questo per dirlo "papale papale" (rotfl)
Re: PUNTATORI
Inviato: domenica 19 novembre 2006, 23:03
da gelina
Prova a dare un'occhiata qua
http://programmazione.html.it/guide/lez ... puntatori/
Da una definizione chiara di che cosa sia un puntatore.
Ciao
Re: PUNTATORI
Inviato: domenica 19 novembre 2006, 23:15
da danlugli
Codice e dati risiedono in memoria ram.
Per semplicità (trascurando una mezza tonnellata di cose che ci stanno in mezzo) immagina la memoria ram come una sequenza di bytes numerabili (indirizzabili) da 0 a dimensione ram - 1.
Il puntatore è sostanzialmente questo numero, con in più qualche informazione sul tipo del puntato, per cui incrementare un puntatore a carattere equivale ad aggiungere 1 mentre incrementare un puntatore a intero equivale ad aggiungere 4 (cioé sizeof int, almeno su macchine a 32/64 bit).
Quando usi una variabile non puntatore è il compilatore che si occupa, senza neanche fartelo sapere, di andare a prendere la cosa giusta all'indirizzo giusto.
Quando usi un puntatore sei tu che devi pensarci con il dereferencing.
Ad esempio:
int i = 3; /* la variabile i sta ad un certo indirizzo in memoria, non sappiamo quale */
printf ("%d\n", i); /* Il compilatore si occupa di andarla a beccare là dove sta */
int * iptr = &i; /* iptr è l'indirizzo della variabile i */
printf ("%d\n", *iptr); /* sei tu che devi fare il dereferencing mettendoci davanti l'asterisco */
Saluti