Ya he resuelto mi problema he cambiado la función que me fallaba de esta forma:
Código:
void persona_mayor(Persona personas[TAM],Persona *mayor,int cantidad)
{
int i;
int edad=personas[0].edad;
for(i=0; i<cantidad; i++)
{
if(personas[i].edad>=edad)
{
*mayor = personas[i];
edad= personas[i].edad;
}
}
}