只知道一个函数的地址为啥要这样调用

只知道一个函数的地址为何要这样调用
本帖最后由 DY11334 于 2015-01-14 11:45:58 编辑
 比如下边

int fun1(int a,int b) { return a+b; }
int fun2(int a,int b) { return a-b; }
typedef int (*pfun)(int,int);
#define MYFUNCTION1 0x80002000 //假设函数fun1的地址位于0x80002000
#define MYFUNCTION2 0x80003000 //假设函数fun2的地址位于0x80003000
void main()
{ int a=2,b=1,c;
  pfun fun = NULL;
  fun=(pfun)MYFUNCTION1; c=(*fun)(a,b);
  fun=(pfun)MYFUNCTION2; c=(*fun)(a,b);
}

fun不就是函数的指针么, 为什么要 (*fun)加一个 * 去调用呢。而普通的函数名传递是不用加*的 。 这是为什么呢。 求教

------解决思路----------------------
http://blog.****.net/qll125596718/article/details/6891881
*pFun”显然是取pFun所指向地址的内容,当然也就是取出了函数glFun()的内容,然后给定参数
------解决思路----------------------
不加*也可以啊