Restituisce Array da funzioni in C ++
C ++ non consente di restituire un intero array come argomento di una funzione. Tuttavia, è possibile restituire un puntatore a un array specificando il nome dell'array senza un indice.
Se vuoi restituire un array monodimensionale da una funzione, dovresti dichiarare una funzione che restituisce un puntatore come nell'esempio seguente:
int * myFunction() {
.
.
.
}
Il secondo punto da ricordare è che C ++ non consiglia di restituire l'indirizzo di una variabile locale all'esterno della funzione, quindi dovresti definire la variabile locale come static variabile.
Ora, considera la seguente funzione, che genererà 10 numeri casuali e li restituirà usando un array e chiamerà questa funzione come segue:
#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;
}
Quando il codice sopra viene compilato insieme ed eseguito, produce un risultato come segue:
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