c语言函数指针和指针函数的区别,以及回调函数的使用。

函数指针是什么,函数指针本质也是指针,不过是指向函数的指针,存储的是函数的地址。

指针函数是什么,指针函数其实就是返回值是指针的函数,本质是函数。

函数指针是如何定义的呢,如下

cpp 复制代码
void (*pfun)(int a,int b)

这里 * pfun 需要加括号,否则定义为了指针函数。

指针函数的定义如下:

cpp 复制代码
void *pfun(int a,int b);

下面利用函数指针实现回调函数

首先我们利用结构体存储一个函数指针类型

cpp 复制代码
typedef struct
{
	void (*p)(int,int);
}p_fun;

这个函数指针是指向一个 返回值是void ,二个参数都是int 类型的函数。下面我们定义一个此类型的函数。

cpp 复制代码
void  printf_fun(int a,int b)
{
	printf("%d,%d",a,b);
}

我们此时可以写一个回调函数,如下:

cpp 复制代码
void callback(int a,int b,void(*p_test)(int,int))
{
	
    p_test(a,b);
  	
}

最后我们在main函数中调用

cpp 复制代码
int main(void )
{ 
  p_fun  para;//定义出结构体变量
  para.p=printf_fun; // 函数指针指向函数。函数名就说地址
  
  callback(3,5,para.p);//调用回调函数。
//注意:本质上传递的都是地址。所以传递的时候并不能传递参数,

 
}

运行结果:

你们看懂了吗?没看懂多看几遍!!!

相关推荐
程序猿乐锅10 分钟前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
AiNightVision12 分钟前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
牧羊人.3331 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
揽星河..2 小时前
【C语言】指针
c语言·开发语言
小郎君6582 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
小小数媒成员2 小时前
UGUI原理(一)
开发语言·游戏·unity·游戏引擎
JJJennie7772 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai
速易达网络2 小时前
Three.js 动画入门教学:从场景搭建到流畅动效
开发语言·javascript·ecmascript
東隅已逝,桑榆非晚2 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
福大大架构师每日一题2 小时前
excelize v2.11.1发布:Go 1.26.0起步,16项安全修复与嵌入对象能力全面升级
开发语言·安全·golang