Gewusst wie: Inkrementieren und Dekrementieren von Zeigern (C#-Programmierhandbuch)How to: Increment and Decrement Pointers (C# Programming Guide)

Verwenden Sie die Inkrement- und Dekrementoperatoren ++ und --, um die Zeigerposition durch sizeof (pointer-type) für einen Zeiger auf den Typ „pointer-type“ zu ändern.Use the increment and the decrement operators, ++ and --, to change the pointer location by sizeof (pointer-type) for a pointer of type pointer-type. Die Inkrement- und Dekrementausdrücke haben das folgende Format:The increment and decrement expressions take the following form:

++p;  
p++;  
--p;  
p--;  

Die Inkrement- und Dekrementoperatoren können auf Zeiger eines beliebigen Typs außer den Typ void* angewendet werden.The increment and decrement operators can be applied to pointers of any type except the type void*.

Die Auswirkungen der Anwendung des Inkrementoperators auf einen Zeiger des Typs pointer-type besteht im Hinzufügen von sizeof (pointer-type) an die Adresse, die in der Zeigervariable enthalten ist.The effect of applying the increment operator to a pointer of the type pointer-type is to add sizeof (pointer-type) to the address that is contained in the pointer variable.

Die Auswirkungen der Anwendung des Dekrementoperators auf einen Zeiger des Typs pointer-type besteht im Hinzufügen von sizeof (pointer-type) an die Adresse, die in der Zeigervariable enthalten ist.The effect of applying the decrement operator to a pointer of the type pointer-type is to subtract sizeof (pointer-type) from the address that is contained in the pointer variable.

Es werden keine Ausnahmen generiert, wenn die Operation die Domänengrenzen des Zeigers überläuft, und das Ergebnis hängt von der Implementierung ab.No exceptions are generated when the operation overflows the domain of the pointer, and the result depends on the implementation.

BeispielExample

In diesem Beispiel durchlaufen Sie ein Array, indem Sie den Zeiger durch die Größe int inkrementieren.In this example, you step through an array by incrementing the pointer by the size of int. Bei jedem Schritt stellen Sie die Adresse und den Inhalt des Arrayelements dar.With each step, you display the address and the content of the array element.

// 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);
            }
        }
    }
}

Wert:0 @ Adresse:12860272Value:0 @ Address:12860272
Wert:1 @ Adresse:12860276Value:1 @ Address:12860276
Wert:2 @ Adresse:12860280Value:2 @ Address:12860280
Wert:3 @ Adresse:12860284Value:3 @ Address:12860284
Wert:4 @ Adresse:12860288Value:4 @ Address:12860288

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
ZeigerausdrückePointer Expressions
C#-OperatorenC# Operators
Bearbeiten von ZeigernManipulating Pointers
ZeigertypenPointer types
TypenTypes
unsafeunsafe
fixed-Anweisungfixed Statement
stackallocstackalloc