El problema es que has intentado innovar y has puesto un doble puntero donde ellos usan un puntero simple:
Copiado del enlace que facilitas:
Código C:
Ver original/* qsort int comparison function */
int int_cmp(const void *a, const void *b)
{
const int *ia = (const int *)a; // casting pointer types
const int *ib = (const int *)b;
return *ia - *ib;
/* integer comparison: returns negative if b > a
and positive if a > b */
}