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

news2025/1/21 12:12:08

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

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

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

void (*pfun)(int a,int b)

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

指针函数的定义如下:

void *pfun(int a,int b);

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

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

typedef struct
{
	void (*p)(int,int);
}p_fun;

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

void  printf_fun(int a,int b)
{
	printf("%d,%d",a,b);
}

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

void callback(int a,int b,void(*p_test)(int,int))
{
	
    p_test(a,b);
  	
}

最后我们在main函数中调用

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

 
}

运行结果:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/925255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Could not resolve all artifacts for configuration ‘:classpath‘.

不与世俗为伍。哪怕这是自己许给自己的诅咒。 —— 宫崎骏 《红猪》 出现的问题 Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all artifacts for configuration ‘:classpath’. 解…

Qt 自定义菜单、右键菜单

在接触Qt这段时间以来,经常遇到菜单项的问题(右键菜单、托盘菜单、按钮菜单等),QMenu用于菜单栏,上下文菜单,弹出菜单等,利用QMenuQAction就可以达到效果! 右键菜单实现:通过重写contextMenuEv…

Three.js + Theatre.js WebGL动画制作简明教程

在这个教程中,我们将介绍 Theatre.js 的基础知识并探索如何制作令人惊叹的动画序列。 我们将演示如何为 Three.js 立方体制作动画、集成引人注目的视觉效果、修改颜色、试验 HTML 元素以及以特定时间间隔将动画与声音播放同步。 推荐:用 NSDT编辑器 快速…

CSS选择器讲解!!!

CSS选择器 一. 常用的CSS基本选择器1.标签(元素)选择器2.类选择器3.id选择器4.类选择器和标签选择器的区别5.通配符选择器 二.复合选择器(2种)1.交集选择器2.并集(群组)选择器 三.属性选择器四.关系选择器1.后代选择器2.子代选择器3.相邻兄弟选择器4.通用兄弟选择器 五.伪元素选…

SpringMVC探秘: 实现MVC模式的Web应用

文章目录 1. SpringMVC概述1.1. 什么是SpringMVC?1.1.1. MVC与SpringMVC 1.2. SpringMVC项目的优势 2. SpringMVC项目的创建与使用2.1. 创建SpringMVC项目2.2. 设置路由2.3. 获取参数2.3.1. 获取一个参数2.3.2. 获取多个参数2.3.3. 获取日期参数2.3.4. 参数重命名Re…

C++之fileno用法实例(一百八十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

智慧煤矿:煤矿井下视频监控汇聚/AI智能分析监管预警系统解决方案

一、背景分析 随着科技的不断进步,视频监控技术在各个领域得到了广泛应用,其中包括煤矿行业。智慧煤矿方案通过引入视频监控系统,可以实现对煤矿生产过程的实时监控和管理,提高矿山安全性和生产效率。为解决井下作业距离地面远&a…

Spring之Spring案例分析

Spring案例分析 Spring案例分析 摘要引言词汇解释详细介绍不同领域的案例分析实战项目示例注意事项总结 参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之…

APP Store上线问题及解决方案

将iOS应用上线到App Store可能会涉及一些问题,在上线iOS应用之前,确保你充分测试应用,遵循苹果的开发者指南和审核规则,以及关注用户的反馈,这些都能帮助你尽可能地解决问题并提供优秀的用户体验。以下是一些可能的问题…

juc基础(三)

目录 一、读写锁 1、读写锁介绍 2、ReentrantReadWriteLock 3、例子 4、小结 二、阻塞队列 1、BlockingQueue 简介 2、BlockingQueue 核心方法 3、案例 4、常见的 BlockingQueue (1)ArrayBlockingQueue(常用) (2)Li…

Prompt本质解密及Evaluation实战(二)

一、LangChain基于evaluation的prompt使用解析 我们来看下LangChain中关于prompt的使用,下面是取自LangChain源码中的一个经典的示例,描述了AI模型被授予访问几种工具来帮助回答用户的问题,其中“tool_descriptions”是至关重要的&#xff0…

React生命周期(新-旧)

文章目录 前言1、生命周期介绍2、钩子函数介绍 生命周期的三个阶段一、生命周期(旧)1.初始化阶段(挂载阶段)① constructor② componentWillMount③ render④ componentDidMount 2.更新阶段① shouldComponentUpdate② componentWillUpdate③ render④ c…

Spring之Spring性能优化与监控

Spring性能优化与监控 Spring性能优化与监控 摘要引言词汇解释详细介绍什么是缓存?Spring框架中的缓存支持示例代码:注释: 注意事项 通过合理使用缓存,可以显著提升应用程序的响应速度,降低系统负载,提供更…

港联证券|市场生态全面优化 创新成长愈加鲜明

8月24日,创业板变革并试点注册制已高质量运行满三周年。坚持变革定力、坚守板块定位——行至2023年,变革后的创业板商场板块功用日益完备、立异生长特征愈加显着,一批又一批战略性新兴工业和高新技能企业继续出现,先进制作、数字经…

IO线程,文件IO(open),文件(stat)与目录(opendir)属性的读取

一、文件IO 1、文件io通过系统调用来操作文件 系统调用:系统提供给用户的一组API(接口函数) open/read/write/close/lseek... 用户空间进程访问内核的接口 把用户从底层的硬件编程中解放出来 极大的提高了系统的安全性 使用户程序具有可移植性(同一系统下) 是操作系统的一部分…

400电话系统如何进行数据分析和优化?

400电话系统可以通过以下方式进行数据分析和优化: 呼叫记录:400电话系统会记录每一次呼叫的相关信息,包括呼叫时间、呼叫持续时间、呼叫地点等。通过分析呼叫记录,企业可以了解客户的呼叫习惯和行为模式,如高峰时段、呼…

如何自己实现一个丝滑的流程图绘制工具(二) 自定义面板

前言 我需要的自定义面板不是固定在左侧,而是右上角,且只有新增节点的操作。采用css取定位更改。 如何自定义面板内容呢? paltte目录下的两个文件 CustomPalette.js export default class CustomPalette {constructor(bpmnFactory, creat…

开源项目-会议室预约管理系统

哈喽,大家好,今天给大家带来一个开源项目-会议室管理系统。项目基于SpringBoot+VUE开发。 会议室管理系统主要分为 前台会议室预约管理系统 和 会议室后台管理系统 两部分 前台会议室预约管理系统主要有申请会议室,预约进程,查看历史会议三部分 后台管理系统主要有会议室…

【Mybatis源码分析】Mybatis 是如何实现预编译的?

Mybatis 是如何实现预编译的? 一、前言二、源码分析三、总结 一、前言 在介绍 Mybatis 是如何实现预编译之前,需提前知道俩个预备知识: MySQL的运行流程(对应的 SQL 会成为一个文本-》查询缓存(8.0后没了&#xff09…

车联网技术介绍

上图是目前车联网架构图,基于“云-管-端”的车联网系统架构以支持车联网应用的实现, “云”是指 V2X 基础平台、高基于精度定位平台等基础能力,可实现车辆动态厘米级定位,这将满足现阶段以及未来车联网应用场景的定位精度需求。 “…