Cours:PointeursCppEtudiants

De troyesGEII
Aller à la navigation Aller à la recherche

Simuler le fonctionnement de ce programme :

int main()
{
  int n1 = 10;           // on supposera que n1 est à l'@ 0x10
  int *n2 = nullptr;
  int n3 = 20;           // on supposera que n3 est à l'@ 0x12
  int *n4 = nullptr;

  cout << &n1 << " " << n2 << " " << &n3 << " " << n4 << endl;
  cout << n1 << " " << *n2 << " " << n3 << " " << *n4 << endl;  // crash du programme

  // ---------------------------------------------------------
  n2 = &n1;
  n4 = n2;
 
  cout << &n1 << " " << n2 << " " << &n3 << " " << n4 << endl;
  cout << n1 << " " << *n2 << " " << n3 << " " << *n4 << endl;

  // ---------------------------------------------------------
  n1 = 30;
  *n2 = 40;
  n4 = &n3;
  n3 = 5;

  cout << &n1 << " " << n2 << " " << &n3 << " " << n4 << endl;
  cout << n1 << " " << *n2 << " " << n3 << " " << *n4 << endl;

  return 0;
}


Indiquez ce qu'affiche ce programme :

int main()
{
   int tab[5] = {1,2,3,4,5}; // on supposera que le tableau est à l'@ 0x5F

   int *pTab = tab;
   
   cout << tab << " " << pTab << endl;
   cout << tab[0] << " " << *pTab << endl;

   pTab++;
   cout << tab << " " << pTab << endl;
   cout << tab[1] << " " << *pTab << endl;

   pTab+=3;
   cout << tab << " " << pTab << endl;
   cout << tab[4] << " " << *pTab << endl;

   pTab++;
   cout << tab << " " << pTab << endl;
   cout << tab[5] << " " << *pTab << endl;

   // attention, ne surtout pas déborder d'un tableau en écriture, par ex
   tab[5] = 3;

   return 0;
}