Obtaining the address of a function is simple: You just use the function name without trailing
parentheses. That is, if think() is a function, then think is the address of the function.
To declare pointers to a data type, the declaration has had to specify exactly to what type the
pointer points. Similarly, a pointer to a function has to specify to what type of function the
pointer points. This means the declaration should identify the function’s return type and the
function’s signature (its argument list). That is, the declaration should provide the same infor-
mation about a function that a function prototype does.
Here’s what a declaration of an appropriate pointer type looks like:
double (*pf)(int); // pf points to a function that takes
// one int argument and that
// returns type double
Continue to read the below article :