Porady: uzyskiwanie dostępu do elementu tablicy za pomocą wskaźnika (Przewodnik programowania w języku C#)
W kontekście niebezpieczne można dostęp element w pamięci przy użyciu wskaźnika element dostępu, jak pokazano w następującym przykładzie:
char* charPointer = stackalloc char[123];
for (int i = 65; i < 123; i++)
{
charPointer[i] = (char)i; //access array elements
}
Wyrażenie w nawiasach kwadratowych musi być jawnie konwertowany na int, uint, long, lub ulong.Operacja p [e] jest równoważne z *(p+e).Podobnie jak c i C++, dostęp do elementu wskaźnik nie sprawdza zdalne błędy.
Przykład
W tym przykładzie 123 lokalizacji pamięci alokowanych do tablicy znaków, charPointer.Tablica jest używany do wyświetlania litery małe i wielkie litery w dwóch dla pętli.
Warto zauważyć, że wyrażenie charPointer[i] jest odpowiednikiem wyrażenia *(charPointer + i), i ten sam wynik można uzyskać, korzystając z jednej z dwóch wyrażeń.
// 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]);
}
}
}
Zobacz też
Informacje
Wyrażenia wskaźników (Przewodnik programowania w języku C#)
Typy wskaźników (Przewodnik programowania w języku C#)
fixed — Instrukcja (odwołanie w C#)
Koncepcje
Przewodnik programowania w języku C#