Passing a value to functions held in an array of functions

Since you need to know which function you are calling to know which argument list to pass:

  switch (whichFunction)
  {
  case 0: func0(arg list for func0); break;
  case 1: func1(different arg list for func1); break;
  }

Another option is to declare the argument as a 'void *'. Then you can pass any pointer, to a single value or a whole struc t of values. Each function needs to know what kind of pointer to cast the void * to.

Another is to make all of the functions Variadic: taking a variable number of arguments. That is how printf() can take a variable number of arguments of various types. The called function has to know what types are passed and in what order.