Is it possible to create a pointer to a function pointer, i.e.
int32_t (*fp[2])(void) = {test_function1, test_function_2}; // initialize a function pointer
<unknown> = fp;
What needs to be written in place of unknown? With "normal" arrays, I could do this:
int a[2] = {0, 1};
int* p = a;
Many thanks in advance.
Function Pointer in C. In C, like normal data pointers (int *, char *, etc), we can have pointers to functions. Following is a simple example that shows declaration and function call using function pointer. #include <stdio.h>. // A normal function with an int parameter. // and void return type.
In lesson 10.8 -- Introduction to pointers, you learned that a pointer is a variable that holds the address of another variable. Function pointers are similar, except that instead of pointing to variables, they point to functions!
Assuming for the moment that C (and C++) had a generic "function pointer" type called function, this might look like this: void create_button ( int x, int y, const char *text, function callback_func );
If we remove bracket, then the expression “void (*fun_ptr) (int)” becomes “void *fun_ptr (int)” which is declaration of a function that returns void pointer. See following post for details. How to declare a pointer to a function?
typedef void(*func_ptr_t)(void); // a function pointer
func_ptr_t* ptr_to_func_ptr; // a pointer to a function pointer - easy to read
func_ptr_t arr[2]; // an array of function pointers - easy to read
void(**func_ptr_ptr)(void); // a pointer to a function pointer - hard to read
void(*func_ptr_arr [2])(void); // an array of function pointers - hard to read
typedef int32_t FP(void);
FP *fp[2] = { test_function1, test_function2 };
FP **p = fp;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With