函数调用的本质与函数指针


typedef 声明函数指针的作用:

typedef void(*Fun)(void);      ---------------》》 这种形式声明函数指针的类型,可以多次使用。如果得到函数的地址就可以直接用Fun强制类型转换成这种类型函数的指针。

void (*pFun)(void);   ------------------》》 这种形式直接声明函数指针,是一个具体的指针。

看如下代码:

void function(){

cout<<"call function"<<endl;

}

typedef void(*Fun)(void); 

Fun pFun =  NULL:

pFun = function;    --------------》》将函数function()地址赋值给pFun

function();-------------》》输出 call function

(*function)();-------------》》输出 call function

(**function)();-------------》》输出 call function

pFun();  ---------------------》》 输出 call function

(*pFun)(); ----------------------》》 输出 call function

(**pFun)(); ----------------------》》 输出 call function

........

---------------------》》可以看出pFun()和(*pFun)()和(**pFun)()是相同的。pFun的值是函数的地址,这个地址指向的又是这个函数本身的地址。在函数中,函数名就是这个函数的地址,这个地址值指向的地址还是这个函数的地址。如图所示:



因此,function的值是0X12456798,pFun的值是0X12456798,*pFun的值是0X12456798,**pFun的值是0X12456798········

调用函数的方法就是直接在指向函数地址的后面加上参数这也是平常调用function()函数的本质。在这里就是调用pFun(),或者(*pFun)(),或者(**pFun)()······



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值