Avevo pensato di fare una cosa del genere...
(faccio un esempio con 2 funzioni perche più semplice da scrivere...)
Creare un array al di fuori della funzione get e passare il puntatore a questo array alla funzione come parametro questa funzione lo riempe e poi io posso stamparlo... il problema che ho riscontrato è che devo inviare per forza un array con una grandezza maggiorata altrimenti il nome verrebbe troncato...

Ho provato a fare pure una funzione che invia un array piccolo e poi tramite new lo espando in base alla dimensione del nome (ad esempio) da restituire...

ma ho notato che utilizzando l'operatore "new" l'indirizzo alla memoria cambia quindi il nome viene allocato in una variabile da me sconosciuta e praticamente non va bene.... boh..

codice:
#include <iostream>
using std::cout;

void getNome( char array[] ){

	// a questo punto io vorrei allargare il mio array
	// mantenendo però invariato l'indirizzo passato come parametro...


	// basta togliere il commento a questa lina per vedere che il main non stampa nulla piu
        // array = new char [20];


	array[0] = 'c';
	array[1] = 'i';
	array[2] = 'a';
	array[3] = 'o';
	array[4] = '\0';


	cout << "Stampo da dentro la funzione getNome: "<< array << std::endl << std::endl;

}


int main(){

	char array[100] = {0};

	getNome( array );


	cout << "Stampo dalla funzione main: "<< array << std::endl;
    return 0;
}
che ne pensi??