Pointeur de retour à partir de fonctions en C ++

Comme nous l'avons vu dans le dernier chapitre, comment C ++ permet de renvoyer un tableau à partir d'une fonction, de la même manière C ++ vous permet de renvoyer un pointeur à partir d'une fonction. Pour ce faire, vous devrez déclarer une fonction renvoyant un pointeur comme dans l'exemple suivant -

int * myFunction() {
   .
   .
   .
}

Le deuxième point à retenir est que ce n'est pas une bonne idée de renvoyer l'adresse d'une variable locale à l'extérieur de la fonction, vous devrez donc définir la variable locale comme static variable.

Maintenant, considérons la fonction suivante, qui générera 10 nombres aléatoires et les renverra en utilisant un nom de tableau qui représente un pointeur, c'est-à-dire l'adresse du premier élément du tableau.

#include <iostream>
#include <ctime>
 
using namespace std;
 
// function to generate and retrun random numbers.
int * getRandom( ) {
   static int  r[10];
 
   // set the seed
   srand( (unsigned)time( NULL ) );
   
   for (int i = 0; i < 10; ++i) {
      r[i] = rand();
      cout << r[i] << endl;
   }
 
   return r;
}
 
// main function to call above defined function.
int main () {
   // a pointer to an int.
   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