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

