function pointer = a reference to a memory address of a function
each function is stored in RAM and thus has a memory address
declaring function pointers:
typeOfReturnValue (*fp) (type of arguments) = &function_name
e.g.
function pointers are useful for implementing callbacks — passing a function as an argument into another function