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. 
    
Like the site, but wish it had a racier URL? 
This
        might be more your speed.