Partager via


Comment : accéder à un élément de tableau à l'aide d'un pointeur (Guide de programmation C#)

Dans un contexte unsafe, vous pouvez accéder à un élément en mémoire en utilisant l'accès à un élément de pointeur, comme illustré dans l'exemple suivant :

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

L'expression entre crochets peut être implicitement convertie en int, uint, long ou ulong. L'opération p[e] équivaut à *(p+e). Comme C et C++, l'accès à un élément de pointeur ne vérifie pas les erreurs de dépassement des limites.

Exemple

Dans cet exemple, 123 emplacements de mémoire sont alloués à un tableau de caractères, charPointer. Le tableau est utilisé pour afficher les lettres minuscules et les lettres majuscules dans deux boucles for.

Remarquez que l'expression charPointer[i] équivaut à l'expression *(charPointer + i), et vous pouvez obtenir le même résultat en utilisant l'une ou l'autre expression.

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

Voir aussi

Référence

Expressions de pointeur (Guide de programmation C#)

Types pointeur (Guide de programmation C#)

unsafe (référence C#)

fixed, instruction (référence C#)

stackalloc (référence C#)

Concepts

Guide de programmation C#

Autres ressources

Types (référence C#)