Qualcosa del genere. Non l'ho provato ma l'idea dovrebbe essere chiara.
codice:
typedef int (FZ_INT_INT_INT)(int,int);
typedef void (FZ_VOID_INT_PINT)(int,int*);
typedef float (FZ_FLOAT_FLOAT)(float);

typedef int(COMMON_FZ_TYPE)(int);

COMMON_FZ_TYPE arr_fz[3];

arr_f[0] = (COMMON_FZ_TYPE) f1;
arr_f[1] = (COMMON_FZ_TYPE) f2;
arr_f[2] = (COMMON_FZ_TYPE) f3;


FZ_INT_INT_INT pf0 = (FZ_INT_INT_INT) arr_f[0];
int a = pf(10,20);

FZ_VOID_INT_PINT pf1 = (FZ_VOID_INT_PINT) arr_f[1];

pf1(50,&a);

FZ_FLOAT_FLOAT pf2 = (FZ_FLOAT_FLOAT) arr_f[2];

float k = pf1(10.2);