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)--;