int compare ( const void* a, const void* b )
{
    printf("comparing %d < %d\n", *(int*)a, *(int*)b );
	return *(int*)a - *(int*)b;
}

void test()
{
	int a=6, b=2, c=5;
	void** pv = malloc (3*sizeof (void*));
	
	if (pv)
	{
		pv[0] = &a; pv[1] = &b; pv[2] = &c;
		printf ("%d %d %d\n", pv[0] == &a, pv[1] == &b, pv[2] == &c );
		printf ( "before sorting: %d(%p) %d(%p) %d(%p)\n", *(int*)pv[0], pv[0], *(int*)pv[1], pv[1], *(int*)pv[2], pv[2] );
		qsort ( pv, 3, sizeof(void*), compare );
		printf ( "after sorting: %d(%p) %d(%p) %d(%p)\n", *(int*)pv[0], pv[0], *(int*)pv[1], pv[1], *(int*)pv[2], pv[2] );
		free(pv);
	}
}

int main(void)
{
	test();
	system("pause");
	return 0;
}