Le tre possibilità "classiche" sono:
- come dici tu, te lo fai passare come parametro;
- lo inglobi in una struct, che può essere usata come valore di ritorno;
- usi l'allocazione dinamica e restituisci un puntatore all'array così allocato (il chiamante dovrà poi deallocarlo esplicitamente).