Originariamente inviato da jobv
ma tornare l'indirizzo di una variabile locale alla funzione credo sia rischioso.
Non è rischioso, è semplicemente sbagliato (tecnicamente è "undefined behavior". Una variabile locale cessa di esistere quando la funzione ritorna, pertanto un puntatore ad essa quando la funzione ritorna non ha più senso. Potrebbe sembrare che funzioni se lo usi subito (perché la locazione di memoria dove si trovava non è ancora stata sovrascritta), ma se inizi a chiamare un'altra funzione subito la memoria in questione assume altri valori.

tl;dr: o, come detto, ti fai passare un puntatore all'array in cui scrivere come parametro, o restituisci della memoria allocata con malloc.