Io userei un reference a puntatore.Dato che devi modificare il valore del puntatore iniziale, lo devi passare, a sua volta, per puntatore. Quindi devi usare un doppio puntatore con tutto quello che ne consegue
void nuovoLibro(Libro **inizio, int nLibri)
codice:void nuovoLibro(Libro *&inizio, int nLibri)