Perché hai un link globale e uno locale?
E poi, non è corretto assegnare l'indirizzo di una variabile locale (int vita) perché all'uscita dalla funzione non sarà più valida.
Infine, se vuoi diminuire il valore del valore puntato devi scrivere
(*link->vita)--;