Buongiorno, vorrei capire quale errore commetto nel compilare il seguente codice di test. Avrei la necessità di ritornare un puntatore ad un array da una funzione ma non mi è molto chiaro come risolvere il problema e molto probabilmente sto commettendo degli errori concettuali.
#include <cstdlib>
#include <iostream>
using namespace std;
// prototipo di funzione, passo l'array per riferimento perchè vorrei modificarne il valore nel corpo della funzione
int ritorna ( int &, int);
int main()
{
int length = 3;
int a[] = {0,1,2};
int *p;
p = ritorna(&a,length);
print(&p,length);
system("PAUSE");
return EXIT_SUCCESS;
}
/*&x è passato per riferimento e vorrebbe corrispondere all'indirizzo in memoria
dell'array x[] di lunghezza length: x[length] */
int ritorna ( int &x, int length){
for (int i = 0; i<length; i++){
*(x+i)=*(x+i)+2;
}
return &x;
}
//stampa l'array
void print ( int &x, int length){
for (int i = 0; i < length; i++){
cout << *(x+i) << " ";
}
cout << endl;
}
Vi ringrazio spero riusciate a chiarirmi tutti i dubbi che mi stanno saltando in mente