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
Referenz
Zeigerausdrücke (C#-Programmierhandbuch)
Zeigertypen (C#-Programmierhandbuch)