Arithmetische Operationen für Zeiger (C#-Programmierhandbuch)

In diesem Thema wird die Verwendung der arithmetischen Operatoren + und - zur Bearbeitung von Zeigern erläutert.

Hinweis

Das Durchführen arithmetischer Operationen auf void-Zeigern ist nicht möglich.

Addieren und Subtrahieren von numerischen Werten zu bzw. von Zeigern

Sie können einen Wert n des Typs int, uint, long oder ulong zu einem Zeiger p eines beliebigen Typs außer void* hinzufügen. Das Ergebnis p+n ist der Zeiger, der aus dem Hinzufügen von n * sizeof(p) to the address of p resultiert. Auf ähnliche Weise ist p-n der Zeiger aus der Subtraktion von n * sizeof(p) von der Adresse von p.

Subtrahieren von Zeigern

Sie können auch Zeiger des gleichen Typs subtrahieren. Das Ergebnis hat immer den Typ long. Wenn z.B. p1 und p2 Zeiger des Typs pointer-type* sind, dann führt der p1-p2-Ausdruck zu:

((long)p1 - (long)p2)/sizeof(pointer_type)

Es werden keine Ausnahmen generiert, wenn die arithmetische Operation die Domänengrenzen des Zeigers überläuft, und das Ergebnis hängt von der Implementierung ab.

Beispiel

// 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

C#-Programmiersprachenspezifikation

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch

C#-Programmierhandbuch
Unsicherer Code und Zeiger
Zeigerausdrücke
C#-Operatoren
Bearbeiten von Zeigern
Zeigertypen
Typen
unsafe
fixed-Anweisung
stackalloc