C++ Retourner un pointeur depuis des fonctions

Pointeurs C++

Dans le chapitre précédent, nous avons appris comment renvoyer un tableau depuis une fonction en C++. De même, C++ vous permet de renvoyer un pointeur depuis une fonction. Pour ce faire, vous devez déclarer une fonction qui renvoie un pointeur, comme suit :

int * myFunction()
{
.
.
.
}

De plus, C++ ne permet pas de renvoyer l'adresse d'une variable locale en dehors de la fonction, sauf si la variable locale est définie comme une variable statique.

Maintenant, examinons la fonction suivante, qui génère 10 nombres aléatoires et les renvoie à l'aide d'un nom de tableau qui représente un pointeur (c'est-à-dire l'adresse du premier élément du tableau), comme suit :

Exemple

#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
// fonction pour générer et renvoyer des nombres aléatoires
int * getRandom( )
{
  static int  r[10];
 
  // Définir la graine
  srand( (unsigned)time( NULL ) );
  for (int i = 0; i < 10; ++i)
  {
    r[i] = rand();
    cout << r[i] << endl;
  }
 
  return r;
}
 
// fonction main pour appeler la fonction définie ci-dessus
int main ()
{
   // un pointeur vers un entier
   int *p;
 
   p = getRandom();
   for ( int i = 0; i < 10; i++ )
   {
       cout << "*(p + " << i << ") : ";
       cout << *(p + i) << endl;
   }
 
   return 0;
}

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

624723190
1468735695
807113585
976495677
613357504
1377296355
1530315259
1778906708
1820354158
667126415
*(p + 0) : 624723190
*(p + 1) : 1468735695
*(p + 2) : 807113585
*(p + 3) : 976495677
*(p + 4) : 613357504
*(p + 5) : 1377296355
*(p + 6) : 1530315259
*(p + 7) : 1778906708
*(p + 8) : 1820354158
*(p + 9) : 667126415

Pointeurs C++

autres extensions