函数指针.

函数指针

函数的地址是存储其机器语言代码的内存的开始地址.

可以编写一个将另一个函数的地址作为参数的函数. 这样第一个函数将能够找到第二个函数, 并运行它. 与直接调用相比, 这种方法很笨拙, 但它允许在不同的时间传递不同函数的地址, 这意味着可以在不同的时间使用不同的函数.

1.函数指针的基础知识

1.1 获取函数的地址

只要使用函数名即可获得函数地址. 也就是说, 如果think()是一个函数, 那么think就是它的地址.

1.2 声明函数指针

通常, 要声明指向特定类型的函数的指针, 可以首先编写这种函数的原型, 然后用(*pf)替换函数名, 这样pf就是这类函数的指针.

double pam(int);

//指针类型声明
double (*pf)(int);

为提供正确的运算符优先级, 必须在声明中使用括号将*pf括起.

*pf(int)意味着pf()是一个返回指针的函数, 而( *pf)(int)意味着pf是一个指向函数的指针.

1.3 使用函数指针来调用函数

double pam(int);
double (*pf)(int);
pf = pam;
double x = pam(4);
double y = (*pf)(5);
//C++也允许像使用函数名那样使用pf
double y = pf(5);

2.使用函数指针的例子(回调函数)

首先, 我们了解下回调函数的概念:回调函数就是一个被作为参数传递的函数。

image-20220126202324708

image-20220126202446659

这个例子定义了两个返回类型为bool型的函数, 在函数compareNumberFunction中, 最后一个参数为函数指针, 当需要找出比被比较数字大的数的时候, 实参为compareGreater的地址, 反之, 实参为compareLess的地址.

函数回调本质为函数指针作为函数参数,函数调用时传入函数地址,这使我们的代码变得更加灵活,可复用性更强。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远离蒙昧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值