В stdlib.h
есть объявление функции qsort() с прототипом:
void qsort( void *ptr, size_t count, size_t size,
int (*comp)(const void *, const void *) );
Очевидно, что это универсальное программирование. Интересно, как это реализовать, как получить элемент из типа void*?