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