Linguaggio C: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 2 216:
pa inizialmente punta ad ''a[7]''. In questo caso l'istruzione ''pa -= j'' farà in modo che pa punti all'elemento ''a[1]'' dell'array.
In generale, se un puntatore p punta ad un elemento di un array a[i], allora l'operazione ''p - j'' farà puntare p ad ''a[i-j]'', sempre se ''a[i-j]'' esista.
 
===== Sottrazione di un puntatore a un puntatore =====
L'operazione di sottrarre un puntatore ad un altro puntatore restituirà ''un intero'' come risultato che rappresenta la distanza tra i due puntatori, cioè mi dice quanti elementi del vettore ci sono tra i due puntatatori.
Consideriamo il seguente frammento di codice:
<source lang="C">
{
char a[10];
int i, j, d;
char *pi, *pj;
pi = &a[8]; //pi punta all'elemento a[8]
pj = &a[2]; //pj punta all'elemento a[2]
d = pi - pj; //d conterrà il numero intero 6. Quindi 6 elementi di a sono presenti tra a[2] ed a[8]
}
</source>
 
'''Attenzione!''' Eseguire questo tipo di operazioni richiede che i puntatori puntino ad elementi di un array. In particolar modo eseguire una sottrazione tra puntatori richiede che entrambi puntino allo stesso array.
 
=== Puntatori a puntatori ===