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 that printData is the name pointer to a function; the function itself may have a completely different name. Given item 1, we know that the function returns void.
- 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); /...