C# Language Accès aux éléments du tableau à l'aide d'un pointeur


Exemple

En C #, un nom de tableau et un pointeur vers un type de données identique à celui des données du tableau ne sont pas du même type de variable. Par exemple, int *p et int[] p ne sont pas du même type. Vous pouvez incrémenter la variable de pointeur p car celle-ci n'est pas fixe en mémoire mais une adresse de tableau est fixe en mémoire et vous ne pouvez pas l'incrémenter.

Par conséquent, si vous avez besoin d'accéder à un tableau de données en utilisant une variable de pointeur, comme nous le faisons habituellement en C ou en C ++, vous devez corriger le pointeur à l'aide du mot clé fixe.

L'exemple suivant illustre ceci:

using System;
namespace UnsafeCodeApplication
{
   class TestPointer
   {
      public unsafe static void Main()
      {
         int[]  list = {10, 100, 200};
         fixed(int *ptr = list)
         
         /* let us have array address in pointer */
         for ( int i = 0; i < 3; i++)
         {
            Console.WriteLine("Address of list[{0}]={1}",i,(int)(ptr + i));
            Console.WriteLine("Value of list[{0}]={1}", i, *(ptr + i));
         }
         
         Console.ReadKey();
      }
   }
}

Lorsque le code ci-dessus a été compilé et exécuté, il produit le résultat suivant:

Address of list[0] = 31627168
Value of list[0] = 10
Address of list[1] = 31627172
Value of list[1] = 100
Address of list[2] = 31627176
Value of list[2] = 200