Cómo: Obtener acceso a un elemento de matriz con un puntero (Guía de programación de C#)
En un contexto no seguro, puede tener acceso a un elemento en memoria utilizando el acceso a elementos de puntero, como se muestra en el ejemplo siguiente:
char* charPointer = stackalloc char[123];
for (int i = 65; i < 123; i++)
{
charPointer[i] = (char)i; //access array elements
}
La expresión entre corchetes debe poder convertirse implícitamente en int, uint, long o ulong. La operación p[e] es equivalente a *(p+e). Al igual que en C y C++, el acceso al elemento de puntero no comprueba errores fuera de los límites.
Ejemplo
En este ejemplo, se asignan 123 ubicaciones de memoria a una matriz de caracteres, charPointer. La matriz se utiliza para mostrar las letras en minúscula y en mayúscula en dos bucles for.
Observe que la expresión charPointer[i] es equivalente a la expresión *(charPointer + i) y se puede obtener el mismo resultado utilizando cualquiera de las dos expresiones.
// 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]);
}
}
}
Vea también
Referencia
Expresiones de puntero (Guía de programación de C#)
Tipos de puntero (Guía de programación de C#)
fixed (Instrucción, Referencia de C#)