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