C++ 函数指针

目录

1.原理

2.作用

3.实现方法


1.原理

        首先明确:函数指针不用想的太复杂,就是和普通指针一样,比如我们在用普通指针指向一个整型变量时,如下方案例1,就

是将int类型的指针p指向了变量a的地址。

//案例1
int a = 5;
int *p = &a;

        我们知道,数组a[10]中,a就代表了数组的首地址,函数也相同,void func()这个函数,func就是此函数的首地址。因此,函数指针就是通过定义一个返回类型和参数类型都与被指向函数相同的指针指向该函数,如下方案例2。

//案例2
void func(int i){
    cout << i << endl;
}
int main(){
    void (*p)(int) = func;
    p(5);
}

2.作用

        那么函数指针到底有什么呢?似乎调用过程看起来反倒更麻烦呢。实际上函数指针主要是为了提高函数调用的灵活性,实现面向对象编程的多态性,可看下一章案例。

3.实现方法

bool max(int i , int j);    //输出大数
bool min(int i, int j);     //输出小数

void show(int i , int j ,bool(*func)(int, int)) {   //以函数指针作为参数,极大的提高了灵活性
    bool res = func(i, j);
    if (res) { cout << i << endl; }
	else { cout << j << endl; }
}

int main()
{
	show(5, 10, max);     //输出10
    show(5, 10, min);     //输出5
	void(*pt)(int, int , bool (*f)(int , int)) = show;
	pt(15, 3, min);       //输出3
	void(*pr)(int, int, bool(*f)(int, int)) = &show;
	pr(20, 10, max);      //输出20
}
//输出大数
bool max(int i , int j) {
	return i > j ? true : false;
}
//输出小数
bool min(int i, int j) {
	return i < j ? true : false;
}

  根据上述案例,将函数指针作为函数show的参数后,只要是返回值为bool,参数为两个int的函数都可以作为函数show的参数,只需要在调用show时写一下究竟要传入哪个函数(本例中min或max)就可以了,无需多次定义不同的函数来实现不同的功能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值