Cours:PointeursCpp : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Analyse de code)
(Fonction de permutation)
Ligne 35 : Ligne 35 :
  
 
=Fonction de permutation=
 
=Fonction de permutation=
 +
 +
Une fonction ne pouvant retourner qu'une valeur, il est difficile d'écrire une fonction sans utiliser ni pointeurs ni référence.
 +
 +
Il faut passer par une structure, ce qui donne qqch du genre :
 +
 +
<source lang=cpp>
 +
 +
struct struct_2int;
 +
{
 +
  int n1;
 +
  int n2;
 +
};
 +
 +
struct struct_2int permutte(int a, int b)
 +
{
 +
  struct struct_2int res;
 +
  res.n1=b;
 +
  res.n2=a;
 +
  return res;
 +
}
 +
 +
int main
 +
{
 +
  int a,b;
 +
 +
  struct struct_2int tmp;
 +
  tmp=permutte(a,b);
 +
  a=tmp.n1;
 +
  b=tmp.n2;
 +
 
 +
}
 +
</source>
 +
 +
Bon c'est pénible !
 +
 +
{{Question|

Version du 22 septembre 2022 à 07:45

Analyse de code

Question.jpg Simuler le fonctionnement de ce programme :

int main()
{
  int n1=10;
  int *n2=nullptr;
  int n3=20;
  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;
}

Fonction de permutation

Une fonction ne pouvant retourner qu'une valeur, il est difficile d'écrire une fonction sans utiliser ni pointeurs ni référence.

Il faut passer par une structure, ce qui donne qqch du genre :

struct struct_2int;
{
  int n1;
  int n2;
};

struct struct_2int permutte(int a, int b)
{
   struct struct_2int res;
   res.n1=b;
   res.n2=a;
   return res;
}

int main
{
   int a,b;

   struct struct_2int tmp;
   tmp=permutte(a,b);
   a=tmp.n1;
   b=tmp.n2;
   
}

Bon c'est pénible !

{{Question|