【深⼊理解指针4】

news2024/11/27 17:57:28

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

1. 回调函数是什么?

2. qsort使用举例

2.1测试qsort函数排序整型数组

2.2测试qsort函数排序结构体数组

3. qsort函数的模拟实现

3.1测试bubble_sort函数排序整型数据

3.2测试bubble_sort函数排序结构体类型的数据

总结


前言

世上有两种耀眼的光芒,一种是正在升起的太阳,一种是正在努力学习编程的你!一个爱学编程的人。各位看官,我衷心的希望这篇博客能对你们有所帮助,同时也希望各位看官能对我的文章给与点评,希望我们能够携手共同促进进步,在编程的道路上越走越远!

想回顾上一节的请点击这里深入理解指针3


提示:以下是本篇文章正文内容,下面案例可供参考

1. 回调函数是什么?

回调函数就是一个通过函数指针调用的函数。

函数名=&函数名=函数的地址

如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数 时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

我们可以把调用的函数的地址以参数的形式传递过去,使用函数指针接收,函数指针指向什么函数就调用什么函数,这里其实使用的就是回调函数的功能。

我们来看代码演示:

2. qsort使用举例

qsort是一个库函数,用来对数据进行排序,它可以排序任意类型的数据!

void qsort(void* base, size_t num, size_t size, int(*compar)(const void* p1, const void* p2));

base:指向要排序的数组的第一个对象
num:待排序的数组的元素个数
size:待排序的数组中每个元素的大小,单位是字节
compar:是一个函数指针,指向的函数能够比较两个元素
p1和p2要比较的两个元素

    

void*是什么?
是一种指针类型

2.1测试qsort函数排序整型数组

2.2测试qsort函数排序结构体数组

结构体类型 

3. qsort函数的模拟实现

qsort()函数是库函数,直接可以使用
qsort()可以排序任意类型的数据,内部使用的是(快速排序)的方法

我们先来回顾一下冒泡函数

3.1测试bubble_sort函数排序整型数据

我们来看一下函数调用的过程:

3.2测试bubble_sort函数排序结构体类型的数据


总结

好了,本篇博客到这里就结束了,如果有更好的观点,请及时留言,我会认真观看并学习。
不积硅步,无以至千里;不积小流,无以成江海。

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

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

相关文章

C++对象的内存分布和虚函数表

Linux C/C 开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全) c中一个类中无非有四种成员:静态数据成员和非静态数据成员,静态函数和非静态函数。 1.非静态数据成员被放在每一个对象体内作为对象专有的数据成员。 2.静态数据成员被提取出来…

Linux -------------------设置防火墙和SELinux

(一)防火墙概述 防火墙的概念:防火墙是一种非常重要的网络安全工具,它是网络安全的重要组成部分,用于保护计算机网络免受未经授权的访问、恶意攻击和数据泄漏等威胁等。 防火墙的特点 防火墙通常具备以下几个特点。 …

(免费领源码)springboot#MYSQL钓鱼交友平台小程序33506-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1课题目的与意义 1.2国内外研究现状 1.3论文结构与章节安排 1.4小程序框架以及目录结构介绍 2 Springboot钓鱼交友平台小程序系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统流程分析 2.2…

Linux内核是如何创建进程?

目录 1.Linux如何创建进程 2.fork函数原理 2.1 fork函数原型 2.2 fork函数实现原理 2.3 父子进程虚拟地址空间(mm_struct)之间的关系 2.4 写时拷贝(copy-on-write)技术 2.5 父子进程如何共享文件(files_struct&…

四十三、【进阶】前缀索引

1、基础 简单点说,前缀索引就是当索引字段类型较大时,有时候需要索引很长的字符串,查询时,会浪费更大的空间,此时可以只对该索引的一部分前缀建立索引,可以大大的节省空间。 前缀索引一般配合选择度进行使用…

多测师肖sir_高级金牌讲师_性能指标

性能指标 一、性能测试指标 性能测试是通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。 目的:验证软件系统是否能够达到用户提出的性能指标,发现系统中存在的性能瓶颈并加以优化。 二、指标分为两大类: 软件…

ZKP9 SNARKs based on Linear PCP (Pinocchio Groth16)

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 9: SNARKs based on Linear PCP (Yupeng Zhang) SNARKs learned so far Earliest Implemented SNARKs Pros Shortest proof size (3 elements [Groth16])Fast verifier (bilinear pairing) Cons FFT and group exponentiatio…

西门子PLC ModbusTcp通信访问网关后从站(SCL语言轮询状态机FB)

西门子PLC的ModbusTcp通信在专栏已有系列文章介绍,所不同的是每个项目的通信需求都略有不同,今天我们以访问网关后的三个从站数据来举例,给出轮询的推荐写法,这里我们利用SCL语音进行编程,方便大家导入导出到自己的项目里使用,相关文章链接大家可以参考下面地址: SMART…

飞致云及其旗下1Panel项目进入2023年第三季度最具成长性开源初创榜单

2023年10月26日,知名风险投资机构Runa Capital发布2023年第三季度ROSS指数(Runa Open Source Startup Index)。ROSS指数按季度汇总并公布在代码托管平台GitHub上年化增长率(AGR)排名前二十位的开源初创公司和开源项目。…

CS224W4.4——矩阵分解和节点Embeddings

我们稍微切换一下方向,讨论生成节点嵌入的矩阵分解方法。具体来说,我们讨论了前面提到的学习节点嵌入的方法如何与矩阵分解的方法联系起来。基于这些直觉,我们提出了基于矩阵分解和随机游走的嵌入方法的3个局限性。在接下来,我们将…

基于51单片机霍尔测速直流电机控制设计

**单片机设计介绍,1658【毕设课设】基于51单片机霍尔测速直流电机控制设计(含源码、原理图、论文、PCB封装) 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 51单片机是微型计算机的一种常见类型,用于处理数…

GB28181协议如何注册

前言 GB28181协议是视频监控领域的国家标准,本文将解析如何在FFmpeg中增加对GB28181协议的支持,使其可以与支持GB28181协议的设备进行通信与控制,实现设备的注册、保活以及流媒体的传输。 1.背景介绍 GB28181协议指的是国家标准GB/T 28181…

S/4 HANA 中的 Email Template

1 如何创建Email Template? 没有特定的事务用于创建电子邮件模板,我们可以将其创建为 SE80 事务中的存储库对象,如下所示: 1,选择包(或本地对象)并右键单击。 2,选择“创建”->“更多”->“电子邮件模板” 尽管如此,对于已有的Email Template,可以使用程序…

音视频开发:音频编码原理+采集+编码实战

原理: 消除冗余信息,压缩量最大,也叫有损压缩 剔除人耳听觉范围外的音频信号20Hz以下和20000Hz以上;去除被掩蔽的音频信号,信号的遮蔽可以分为频域遮蔽和时域遮蔽;频域遮蔽效应 屏蔽70分贝以下&#xff0…

【QT】仿函数

函数调用运算符 () 也可以重载由于重载后使用的方式非常像函数的调用&#xff0c;因此称为仿函数仿函数没有固定写法&#xff0c;非常灵活 示例&#xff1a; #include <iostream> #include <string> using namespace std;class MyPrint { public://重载的运算符是…

MFC网络编程-Udp客户端

目录 1、UI的设计&#xff1a; 2、代码的实现&#xff1a; &#xff08;1&#xff09;、重写CSocket虚函数OnReceive&#xff0c;并且传入对话框的指针 &#xff08;2&#xff09;、初始化SOCKET &#xff08;3&#xff09;、绑定本地IP和端口 &#xff08;4&#xff09;、…

Microsoft SQL Server 缓冲区错误漏洞(CVE-2018-8273)解决方法

前言&#xff1a; 在一次漏洞扫描中&#xff0c;扫描出紧急漏洞Microsoft SQL Server 缓冲区错误漏洞(CVE-2018-8273) 根据修复建议找补丁。 一、漏洞详情 二、寻找补丁 根据漏洞修复建议去下载补丁 目前厂商已发布升级补丁以修复漏洞&#xff0c;补丁获取链接&#xff1a;h…

龙迅视频转换IC LT6711GX适用于HDMI2.1转TPYE-C/DP1.4/EDP功能应用

1.描述 应用功能&#xff1a;LT6711GX适用于HDMI2.1转TPYE-C/DP1.4/EDP 分辨率&#xff1a;最高支持8K30HZ或8K60Hz压缩数据 工作温度范围&#xff1a;−40C to 85C 产品封装&#xff1a;QFN88 &#xff08;10*10&#xff09; 最小包装量&#xff1a;1680PCS 2.产品应用市场 •…

【JMeter】线程组分类以及功能介绍

1.概念介绍 进程&#xff1a; 正在运行的程序&#xff0c;比如Jmeter 线程组&#xff1a;进程中有多个线程 2线程组分类 JMeter自带的线程组&#xff1a; 普通线程组&#xff08;Thread Group&#xff09;开始线程组&#xff08;setUp Thread Group&#xff09;结束线程…

绝对好用!一个浏览器插件解决跨设备同步问题,吊打文件传输助手!

在数字化的时代&#xff0c;我们所接触的信息呈现指数级的增长。无论是办公资料、学习资源&#xff0c;还是各种生活中的点滴&#xff0c;所有这些信息以各种形式——文本、图片、视频、音乐等——出现在我们面前&#xff0c;如何有效地同步和管理这些内容成为一个挑战。 就跨…