C - Arrays of Pointers to Functions


You can create an array of pointers to functions.

To declare an array of function pointers, put the array dimension after the function pointer array name, for instance:

int (*pfunctions[10]) (int);

This declares an array, pfunctions, with ten elements.

Each element in this array can store the address of a function with a return type of int and a parameter of type int.


#include <stdio.h>

// Function prototypes
int sum(int, int);
int product(int, int);
int difference(int, int);

int main(void)
  int a = 10;                         // Initial value for a
  int b = 5;                          // Initial value for b
  int result = 0;                     // Storage for results
  int(*pfun[3])(int, int);           // Function pointer array declaration
                     // Initialize pointers
  pfun[0] = sum;//w ww . j av  a 2  s .c o m
  pfun[1] = product;
  pfun[2] = difference;

  // Execute each function pointed to
  for (int i = 0; i < 3; ++i)
    result = pfun[i](a, b);           // Call the function through a pointer
    printf("result = %2d\n", result); // Display the result

  // Call all three functions through pointers in an expression
  result = pfun[1](pfun[0](a, b), pfun[2](a, b));
  printf("The product of the sum and the difference = %2d\n", result);
  return 0;
// Definition of the function product
int product(int x, int y)
  return x * y;

// Definition of the function difference
int difference(int x, int y)
  return x - y;
int sum(int x, int y)
  return x + y;


Related Topic