Function pointers are means to add another level of indirection.
Function pointers are no different.
We also declare a function pointer p . The function pointer is defined such that it shares the same return type and parameter types as a and b . Likewise, p can be assigned b , where calls to p yield calls to b . Same example again using the typedef operator. As you probably learned in your first programming courses, pointers to variables allows you to modify variable contents from a non-local environment.