Renvoyer un tableau à partir de fonctions en C ++

C ++ ne permet pas de renvoyer un tableau entier comme argument d'une fonction. Cependant, vous pouvez renvoyer un pointeur vers un tableau en spécifiant le nom du tableau sans index.

Si vous souhaitez renvoyer un tableau à une seule dimension à partir d'une fonction, vous devrez déclarer une fonction renvoyant un pointeur comme dans l'exemple suivant -

int * myFunction() {
   .
   .
   .
}

Le deuxième point à retenir est que C ++ ne recommande pas de renvoyer l'adresse d'une variable locale en dehors de la fonction, vous devrez donc définir la variable locale comme static variable.

Maintenant, considérez la fonction suivante, qui générera 10 nombres aléatoires et les renverra en utilisant un tableau et appelez cette fonction comme suit -

#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