Condividi tramite


Procedura: accedere a un elemento di matrice mediante un puntatore (Guida per programmatori C#)

In un contesto unsafe è possibile accedere a un elemento in memoria utilizzando l'accesso all'elemento mediante puntatore come illustrato nell'esempio seguente:

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

L'espressione racchiusa tra parentesi quadre deve essere convertibile in modo implicito in int, uint, long o ulong.L'operazione p[e] è equivalente a *(p+e).Analogamente a C e C++, l'accesso a elemento del puntatore non implica la verifica di errori relativi a indici di matrici non compresi nell'intervallo.

Esempio

In questo esempio 123 posizioni di memoria vengono allocate a una matrice di caratteri denominata charPointer.La matrice viene utilizzata per visualizzare le lettere in minuscolo e maiuscolo in due cicli for.

Si noti che l'espressione charPointer[i] è equivalente a *(charPointer + i) ed è possibile ottenere lo stesso risultato utilizzando una delle due espressioni.

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

Vedere anche

Riferimenti

Espressioni puntatore (Guida per programmatori C#)

Tipi di puntatori (Guida per programmatori C#)

unsafe (Riferimenti per C#)

Istruzione fixed (Riferimenti per C#)

stackalloc (Riferimenti per C#)

Concetti

Guida per programmatori C#

Altre risorse

Tipi (Riferimenti per C#)