Se vuoi mantenere la dichiarazione della funzione così, devi fare:
Ps: Ricordati che poi devi liberare la memoria allocata per nuovo_arraycodice:int* creazione_array(int arr[], int dim){ int* nuovo_array = new int[<dimensione>]; ... fai quel che devi per riempire nuovo_array... return nuovo_array; } void funzione_precedente(){ ... int* p = creazione_array(altro_array, dim); ... }