dovrei passare la dimensione decrementata giusto?
Esatto, p + dim - 1
La condizione if(dim == 1) pensavo di utilizzarlo come caso base
Se vuoi esplicitare il caso base dovresti scrivere qualcosa del genere:
codice:
void inverti(int *p, int dim){
    if(dim == 1){
        return;
    }
    scambia(p, p + dim - 1);
    inverti(p + 1, dim - 2);
}
ma dato che è una funzione void puoi riscriverla così:
codice:
void inverti(int *p, int dim){
    if (dim > 1){
        scambia(p, p + dim - 1);
        inverti(p + 1, dim - 2);
    }
}