函数指针的使用:是什么?怎么写?有什么用?怎么调用?(配有回调函数完整例子)

回调函数配合函数指针的使用(完整例程)

是什么?

函数指针:是指向函数的首地址的一个指针变量

怎么写?

定义函数指针:用(*Name)替换函数名,剩下照抄(形参可写可不写)
比如:

//有一个函数:
int add(int a,int b)
{
	return a+b;
}
//函数指针写法:
int (*p)(int a,int b);
//形参可以不写,下面这种写法也是正确的
int (*p)(int,int);

//因为为了避免野指针的问题,我平时都是这么写:
int (*p)(int,int)=NULL;

有什么用?

用于回调函数(以函数指针为参数的函数),文章开头有例程
简单来说就是输入相同的参数,实现不同的功能;

怎么调用?

  1. 直接用函数指针替换函数名的方式调用
//根据上一块代码有一个add函数:
p(5,10); //实现5+10的输出
  1. 指针的基本操作调用,即取*运算再调用
//根据上一块代码有一个add函数:
(*p)(5,10)//实现5+10的输出

函数指针例程

#include<bits/stdc++.h>
using namespace std;
int add(int a,int b)
{
    return a+b;
}

int main()
{
    int (*p)(int,int)=NULL; //根据“用(*Name)替换函数名,剩下照抄(形参可写可不写)”
    p=add; //p指向add函数
    cout<<p(10,5)<<endl; //输出结果为10+5=15
    return 0;
}

通常为了方便书写,经常使用typedef来定义函数指针

#include<bits/stdc++.h>
using namespace std;
int add(int a,int b)
{
    return a+b;
}
typedef int (*PA)(int,int);
int main()
{
    PA p=NULL; //这样就能一眼看出p是函数指针
    //等效于int (*p)(int,int)=NULL;
    
    p=add; //p指向add函数
    cout<<p(10,5)<<endl; //输出结果为10+5=15
    return 0;
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值