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#)