Condividi tramite


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

Operatori [C#]

Modifica dei puntatori (Guida per programmatori C#)

Tipi di puntatori (Guida per programmatori C#)

unsafe (Riferimenti per C#)

Istruzione fixed (Riferimenti per C#)

stackalloc (Riferimenti per C#)

Concetti

Guida per programmatori C#

Altre risorse

Tipi (Riferimenti per C#)