Pointers to functions
When we declare a pointer to a function, we need more than just the pointer value – we need to specify both the return type of the function and the parameter list of the function being pointed to.
Let's break this apparent syntactical gobbledygook down into understandable parts. It consists of three parts:
- The return type of the function; in this case,
void
. - The name of the pointer to the function; in this case,
(*printData)
. This indicates thatprintData
is the name pointer to a function; the function itself may have a completely different name. Given the first item, we know that the function returnsvoid
. - The function we'll implement via this pointer to it has a parameter list, in this case,
(ListData* pData)
.
Given these three parts, compare the function pointer declaration to the function's prototype, in this case, PrintInt()
:
void (*printData)(ListData* pData)...