In computer programming, a callback is executable code that is
passed as an argument to other code. It allows a lower-level
software layer to call a function defined in a higher-level layer.
Usually, the higher-level code starts by calling a function within
the lower-level code passing to it a pointer or handle to another
function. While the lower-level function executes, it may call the
passed-in function any number of times to perform some subtask. In
another scenario, the lower-level function registers the passed-in
function as a handler that is to be called asynchronously by the
lower-level at a later time in reaction to something. A callback
can be used as a simpler alternative to polymorphism and generic
programming, in that the exact behavior of a function can be
dynamically determined by passing different (yet compatible)
function pointers or handles to the lower-level function. This can
be a very powerful technique for code reuse. Callback functions
separate the caller from the callee, the caller doesn't care who
the callee is For complete understanding we need to know about
Function pointers in c. check the link below