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