How Do I Declare a Function Pointer in C?
As a variable:
returnType (*variableName)(parameterTypes) = function_name;
As a static const variable:
static returnType (* const variableName)(parameterTypes) = function_name;
As an array:
returnType (*arrayName[])(parameterTypes) = {function_name0,
...};
As a parameter to a function:
int my_function(returnType (*parameterName)(parameterTypes));
As a return value from a function:
returnType (*my_function(int, ...))(parameterTypes);
... (returnType (*)(parameterTypes))my_expression ...
As a function pointer typedef:
typedef returnType (*typeName)(parameterTypes);
As a function typedef:
typedef returnType typeName(parameterTypes);
How Do I Do It in C++? (C++11 and later)
C++ offers several compelling alternatives to C-style function pointers such as templates and
std::function with
std::bind.
If you really want to use function pointers in C++, you can still use the same C-style syntax shown above or the
type aliases below.
As a function pointer type alias:
using
typeName = returnType (*)(parameterTypes);
As a function type alias:
using
typeName = returnType (parameterTypes);
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?
https://goshdarnfunctionpointers.com is a more
work-friendly mirror.