Exercise 18: Pointers to functions

I understood the concept of typedef, the example isn't clear
enough of the use case but here's my vague understanding:

In main, evaluate inputs, first evaluate input from arguments:
argv + 1 and length of arguments: argc - 1. Now, store inputs
using for loop into numbers array.

Call test_sorting with numbers, count and a function. For example,
when "test_sorting(numbers, count, sorted_order)" is called the
control descends into test_sorting, calls bubble_sort(). Now
control descends into bubble_sort(), initializes variables for
looping, allocates memory and checks validity of memory. In the
nested for loop, cmp(target[j]) means go to compare_cb function.
The signature is similar to signatures in sorted_order,
reverse_order and strange_order. So, whichever was called from
main, will be called from bubble_sort(). This gives bubble_sort()
 a new way to sort depending on what was called.