Operazioni aritmetiche sui puntatori (Guida per programmatori C#)
In questo argomento viene illustrato l'utilizzo degli operatori aritmetici + e - per la gestione dei puntatori.
[!NOTA]
Non è possibile eseguire operazioni aritmetiche su puntatori a void.
Aggiunta e sottrazione di valori numerici a e da puntatori
È possibile aggiungere un valore n di tipo int, uint, long o ulong a un puntatore p,di qualsiasi tipo tranne void*.Il p+n restituito è il puntatore risultante dall'aggiunta di n * sizeof(p) to the address of p.Analogamente, p-n è il puntatore risultante dalla sottrazione di n * sizeof(p) dall'indirizzo di p.
Sottrazione di puntatori
È anche possibile sottrarre puntatori dello stesso tipo.Il risultato è sempre di tipo long.Se, ad esempio, p1 e p2 sono puntatori di tipo pointer-type*, l'espressione p1-p2 determinerà il seguente risultato:
((long)p1 - (long)p2)/sizeof(pointer_type)
Quando l'operazione aritmetica causa un overflow del dominio del puntatore, non vengono generate eccezioni e il risultato dipende dall'implementazione.
Esempio
// compile with: /unsafe
class PointerArithmetic
{
unsafe static void Main()
{
int* memory = stackalloc int[30];
long difference;
int* p1 = &memory[4];
int* p2 = &memory[10];
difference = p2 - p1;
System.Console.WriteLine("The difference is: {0}", difference);
}
}
// Output: The difference is: 6
Specifiche del linguaggio C#
Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.
Vedere anche
Riferimenti
Codice unsafe e puntatori (Guida per programmatori C#)
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#)