函数指针有关问题

函数指针问题
#include   <stdio.h>

void   f0(int   a,   int   b,   int   c){   printf( "f0   %d   %d   %d...\n ",   a,   b,   c);}
void   f1(int   a,   int   b,   int   c){   printf( "f1   %d   %d   %d...\n ",   a,   b,   c);}
void   f2(int   a,   int   b,   int   c){   printf( "f2   %d   %d   %d...\n ",   a,   b,   c);}

int
main()
{
                void   (*fa[3])(int,   int,   int);
                void   (*fp)(int,   int,   int);
                int   i   =   0;

                fa[0]   =   f0;
                fa[1]   =   f1;
                fa[2]   =   f2;

                fp   =   fa;   //assignment   from   incompatible   pointer   type
                for(   ;   i   <   3;   ++i)
                                (*(fp   +   i))(i,   i   +   1,   i   +   2);
}

我的疑惑是为什么fp与fa不是一个类型的指针?
要想正确赋值的话fp应该怎眼定义?并能实现后来的循环操作?
谢谢

------解决方案--------------------
一个是函数指针数组,一个是单个函数指针.你说能直接赋值么
------解决方案--------------------
由于数组是常指针

所以 fp==> *
fa==> **

多一级 :)
------解决方案--------------------
void (**fp)(int, int, int);

------解决方案--------------------
mark