Freigeben über


Gewusst wie: Zugreifen auf ein Arrayelement mit einem Zeiger (C#-Programmierhandbuch)

Aktualisiert: November 2007

In einem unsicheren Kontext können Sie mittels Zeigerelementzugriff auf ein Element im Speicher zugreifen, wie im folgenden Beispiel gezeigt:

       char* charPointer = stackalloc char[123];
      for (int i = 65; i < 123; i++)
      {
          charPointer[i] = (char)i; //access array elements
      }

Der Ausdruck in eckigen Klammern muss implizit in int, uint, long oder ulong konvertierbar sein. Die Operation p[e] entspricht *(p+e). Wie in C und C++ überprüft der Zeigerelementzugriff keine Fehler außerhalb des gültigen Bereichs.

Beispiel

In diesem Beispiel werden dem Zeichenarray charPointer 123 Speicheradressen zugeordnet. Das Array wird verwendet, um die Klein- und Großbuchstaben in zwei for-Schleifen anzuzeigen.

Beachten Sie, dass der Ausdruck charPointer[i] und der Ausdruck *(charPointer + i) äquivalent sind. Sie erhalten dasselbe Ergebnis, unabhängig davon, welchen Ausdruck Sie verwenden.

// compile with: /unsafe
class Pointers
{
    unsafe static void Main() 
    {
        char* charPointer = stackalloc char[123];

        for (int i = 65; i < 123; i++)
        {
            charPointer[i] = (char)i;
        }

        // Print uppercase letters:
        System.Console.WriteLine("Uppercase letters:");
        for (int i = 65; i < 91; i++)
        {
            System.Console.Write(charPointer[i]);
        }
        System.Console.WriteLine();

        // Print lowercase letters:
        System.Console.WriteLine("Lowercase letters:");
        for (int i = 97; i < 123; i++)
        {
            System.Console.Write(charPointer[i]);
        }
    }
}
Uppercase letters:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Lowercase letters:
abcdefghijklmnopqrstuvwxyz

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

Zeigerausdrücke (C#-Programmierhandbuch)

Zeigertypen (C#-Programmierhandbuch)

unsafe (C#-Referenz)

fixed-Anweisung (C#-Referenz)

stackalloc (C#-Referenz)

Weitere Ressourcen

Typen (C#-Referenz)