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);//调用回调函数。
//注意:本质上传递的都是地址。所以传递的时候并不能传递参数,

 
}

运行结果:

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

相关推荐
君的名字7 分钟前
怎么判断一个Android APP使用了Qt 这个跨端框架
android·开发语言·qt
不秃的开发媛16 分钟前
JFace中MVC的表的单元格编辑功能的实现
java·开发语言·mvc
顽强卖力21 分钟前
python之数据结构与算法篇
数据结构·python·算法·链表·排序算法·哈希算法
努力学习的小廉24 分钟前
我爱学算法之—— 二分查找(中)
开发语言·c++·算法
了不起的杰24 分钟前
【算法】: 前缀和算法(利用o(1)的时间复杂度快速求区间和)
算法
越来越无动于衷30 分钟前
java错题
java·算法
沐风ya32 分钟前
leetcode每日一题(昨天的) -- 3356. 零数组变换 II
数据结构·算法·leetcode
只_只34 分钟前
A1012 PAT甲级JAVA题解 The Best Bank
开发语言·python
fashia40 分钟前
Java转Go日记(五十六):gin 渲染
开发语言·后端·golang·go·gin
合方圆~小文1 小时前
架空线路监控系统是针对高压架空输电线路设计的一种安全监测解决方案
c语言·人工智能·硬件工程·数据库架构