只知道一个函数的地址为啥要这样调用
只知道一个函数的地址为何要这样调用
比如下边
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()的内容,然后给定参数
------解决思路----------------------
不加*也可以啊
比如下边
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()的内容,然后给定参数
------解决思路----------------------
不加*也可以啊