Procedura: incrementare e decrementare i puntatori (Guida per programmatori C#)
Gli operatori di incremento e decremento ++ e -- consentono di modificare la posizione del puntatore in base a sizeof (pointer-type), nel caso di un puntatore di tipo pointer-type*. Il formato delle espressioni di incremento e decremento è il seguente:
++p;
p++;
--p;
p--;
È possibile applicare gli operatori di incremento e decremento ai puntatori di qualsiasi tipo, ad eccezione del tipo void*.
Quando si applica l'operatore di incremento a un puntatore di tipo pointer-type, sizeof (pointer-type) viene aggiunto all'indirizzo contenuto nella variabile del puntatore.
Quando si applica l'operatore di decremento a un puntatore di tipo pointer-type, sizeof (pointer-type) viene sottratto dall'indirizzo contenuto nella variabile del puntatore.
Quando l'operazione causa un overflow del dominio del puntatore, non vengono generate eccezioni e il risultato dipende dall'implementazione.
Esempio
Nell'esempio riportato di seguito viene illustrato come passare da un elemento di una matrice all'altro incrementando il puntatore della dimensione di int. A ogni passaggio verranno visualizzati l'indirizzo e il contenuto dell'elemento della matrice.
// compile with: /unsafe
class IncrDecr
{
unsafe static void Main()
{
int[] numbers = {0,1,2,3,4};
// Assign the array address to the pointer:
fixed (int* p1 = numbers)
{
// Step through the array elements:
for(int* p2=p1; p2<p1+numbers.Length; p2++)
{
System.Console.WriteLine("Value:{0} @ Address:{1}", *p2, (long)p2);
}
}
}
}
Vedere anche
Riferimenti
Espressioni puntatore (Guida per programmatori C#)
Modifica dei puntatori (Guida per programmatori C#)
Tipi di puntatori (Guida per programmatori C#)
Istruzione fixed (Riferimenti per C#)
stackalloc (Riferimenti per C#)