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#)

unsafe (odwołanie w C#)

fixed — Instrukcja (odwołanie w C#)

stackalloc (odwołanie w C#)

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Types (odwołanie w C#)