C pointer to array of function



#include<stdio.h>

int display();
int(*arr[3])();
int(*(*ptr)[3])();

int main() {
   arr[0]=display;
   arr[1]=getch;
   ptr=&arr;

   printf("%d",(**ptr)());

  (*(*ptr+1))();
  return 0;
}

int display(){
   int num = 25;
   return num;
}

Output :

25

Explanation :

Step 1 : Array of Function

int(*arr[3])();

above statement tell that –

  • arr is an array of size 3.
  • Array stores address of functions
  • Array stores address of function having integer as return type and does not takes any parameter.

Step 2 : Declaring Array of function Pointer

int(*(*ptr)[3])();
  • It is array of function pointer which points to “array of function“.

Step 3 : Store function names inside function array

arr[0] = display;
arr[1] = getch;

Step 4 : Store address of function Array to Function Pointer

ptr = &arr;

Step 5 : Calling Function

following syntax is used to call display function –

(**ptr)();

this syntax is used to call getch function –

(*(*ptr+1))();