C/Vettori e puntatori/Puntatori: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 93:
 
L'aritmetica dei puntatori permette anche [[C/Vettori e puntatori/Interscambiabilità tra puntatori e vettori|l'interscambiabilità tra puntatori e vettori]].
==Funzioni e puntatori==
Se ad una funzione viene passato un {{IndexItem|puntatore}}puntatore, essa sarà in grado di modificare il valore puntato dal puntatore.
Per esempio:
 
<source lang="c">
void doubleof(int*); //prototipo
int main (void)
{
int a=2;
doubleof(&a);
printf("%d", a);
return 0;
}
void doubleof(int *x)
{
*x = (* x) * 2;
}
</source>
 
Questa piccola applicazione stamperà 4. Ecco come:
 
#<code>int a=2;</code> Questa istruzione dichiara una variabile intera a e la inizializza con il valore 2.
#<code>doubleof(&a);</code> Chiama la funzione <code>doubleof</code>, passandole l'indirizzo della variabile <tt>a</tt>.
#Dentro <code>doubleof</code> viene eseguita l'istruzione <code>* x = (* x) * 2;</code>, che assegna alla variabile puntata da <tt>x</tt> (<tt>a</tt>) il valore della stessa variabile puntata da <tt>x</tt> moltiplicato per 2.
#<code>printf("%d", a);</code> Stampa il valore ottenuto.
 
Se invece il nostro programma fosse stato così, avrebbe restituito <tt>2</tt>.
 
<source lang="c">
void doubleof (int) //prototipo
int main (void)
{
int a=2;
doubleof(a);
printf("%d", a);
return 0;
}
void doubleof(int x)
{
x = x*2;
}
</source>
 
Per una maggiore comprensione di questo paragrafo, e per una descrizione dei puntatori a funzione, si consiglia la lettura della [[C/Vettori_e_puntatori/Puntatori|sezione dedicata ai puntatori]].
 
=={{IndexItem|funzioni, puntatori a}}{{IndexItem|puntatori a funzioni}}Puntatori a funzioni==