Programmation en C++ – Fonction qui retourne un pointeur

Comme nous l’avons vu dans le dernier chapitre comment C ++ permet de retourner un tableau à partir d’une fonction, de manière similaire C ++ vous permet de retourner un pointeur à partir d’une fonction. Pour ce faire, vous devrez déclarer une fonction renvoyant un pointeur comme dans l’exemple suivant:

int * maFonction() {
   .
   .
   .
}

Le deuxième point à retenir est qu’il n’est pas bon de renvoyer l’adresse d’une variable locale à l’extérieur de la fonction, de sorte que vous devriez définir la variable locale comme variable statique.
 
 
Considérons maintenant la fonction suivante, qui va générer 5 nombres aléatoires et les renvoyer en utilisant un nom de tableau qui représente un pointeur, c’est-à-dire l’adresse du premier élément de tableau.

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

La sotie :

r [0] : 1155940372
r [1] : 329344034
r [2] : 889913826
r [3] : 1900178148
r [4] : 113393003
*(p + 0) : 1155940372
*(p + 1) : 329344034
*(p + 2) : 889913826
*(p + 3) : 1900178148
*(p + 4) : 113393003

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *