How Do I Declare a Function Pointer in C?

As a variable:

returnType (*variableName)(parameterTypes) = function_name;
(example code)

As a static const variable:

static returnType (* const variableName)(parameterTypes) = function_name;
(example code)

As an array:

returnType (*arrayName[])(parameterTypes) = {function_name0, ...};
(example code)

As a parameter to a function:

int my_function(returnType (*parameterName)(parameterTypes));
(example code)

As a return value from a function:

returnType (*my_function(int, ...))(parameterTypes);
(example code)

As a cast (but try not to cast functions):

... (returnType (*)(parameterTypes))my_expression ...
(example code)

As a function pointer typedef:

typedef returnType (*typeName)(parameterTypes);
(example code)

As a function typedef:

typedef returnType typeName(parameterTypes);
(example code)
This site is not intended to be an exhaustive list of all possible uses of function pointers.
If you find yourself needing syntax not listed here, it is likely that a typedef would make your code more readable.

Unable to access this site due to the profanity in the URL? http://goshdarnfunctionpointers.com is a more work-friendly mirror.