函数指针和回调函数以及返回指向函数的指针

本文介绍了函数指针的概念,强调了在声明时必须明确其指向的函数类型。通过示例展示了如何使用函数指针调用函数,包括直接赋值和解引用调用。此外,探讨了函数指针作为形参实现的正向和反向调用,解释了回调函数的工作原理。最后,阐述了如何声明并返回指向函数的指针,指出必须显式声明返回类型为函数指针。
摘要由CSDN通过智能技术生成

       函数指针指向的是函数而非对象。和其他类型一样,函数指针指向某种特定类型。因为函数的类型由它的返回类型和形参类型共同决定,与函数名无关,所以想要声明一个函数指针,只需要用指针替换函数名即可,例如:

比较字符串长度的函数:bool LengthCompare(const string &, const string &);

此函数的函数指针为:    bool (*pf)(const string &, const string &);

pf指向一个函数,函数的参数是两个const string的引用,返回值是bool类型。*pf两端的括号必不可少,如果不写会变成:

bool  *pf  (const string &, const string &);  此时pf是一个返回值为bool指针的函数。

 

函数指针的使用:

1、当把函数名作为一个值使用时,该函数自动地转换为指针。

pf = LengthCompare;            //pf指向名为LengthCompare的函数

pf = &LengthCompare;         //等价的赋值语句,取地址符是可选的

同时,直接使用指向函数的指针调用该函数时,无须提前解引用指针。

bool b1 = pf("hello", "world");                          //调用LengthCompare函数

bool b2 = (*pf)("hello", "world");           

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值