Partilhar via


Como acessar um elemento de matriz com um ponteiro (Guia de Programação em C#)

Em um contexto não seguro, você pode acessar um elemento na memória por meio do acesso do elemento de ponteiro, conforme mostrado no exemplo a seguir:

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

A expressão entre colchetes deve ser implicitamente conversível em int, uint, long, ou ulong. A operação p [e] é equivalente a *(p+e). Assim como c e C++, o acesso ao elemento ponteiro não verifica out-of-bounds erros.

Exemplo

Neste exemplo, 123 locais de memória são alocados para uma matriz de caracteres, charPointer. A matriz é usada para exibir as letras minúsculas e letras maiúsculas em dois para loops.

Observe que a expressão charPointer[i] é equivalente à expressão *(charPointer + i), e você pode obter o mesmo resultado usando uma das duas expressões.

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

Consulte também

Referência

Expressões de ponteiro (Guia de Programação em C#)

Tipos de ponteiro (Guia de Programação em C#)

unsafe (Referência de C#)

Instrução fixed (Referência de C#)

stackalloc (Referência de C#)

Conceitos

Guia de Programação em C#

Outros recursos

Tipos (Referência de C#)