user2389717
user2389717

Reputation: 101

Create a pointer to a function pointer

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;

Upvotes: 8

Views: 14865

Answers (2)

Lundin
Lundin

Reputation: 213276

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

Upvotes: 35

M.M
M.M

Reputation: 141534

typedef int32_t FP(void);

FP *fp[2] = { test_function1, test_function2 };
FP **p = fp;

Upvotes: 3

Related Questions