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

朝阳她老公 2015-01-14 11:45:02
比如下边

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)加一个 * 去调用呢。而普通的函数名传递是不用加*的 。 这是为什么呢。 求教
...全文
91 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
laowang2 2015-01-19
  • 打赏
  • 举报
回复
不用加,崩溃时其他原因。
我不懂电脑 2015-01-14
  • 打赏
  • 举报
回复
http://blog.csdn.net/qll125596718/article/details/6891881 *pFun”显然是取pFun所指向地址的内容,当然也就是取出了函数glFun()的内容,然后给定参数
朝阳她老公 2015-01-14
  • 打赏
  • 举报
回复
自己顶啊啊啊啊
朝阳她老公 2015-01-14
  • 打赏
  • 举报
回复
引用 3 楼 akirya 的回复:
不加*也可以啊
不加*的话会崩溃。 加*的话还没试。。
  • 打赏
  • 举报
回复
不加*也可以啊

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧