指针(2)

简介: 指针(2)

函数指针数组

函数指针数组是一个用来存放函数指针(地址)的数组。
image.png
如上图,是将两个函数指针存入数组中。如何写函数指针数组名呢?我们可以先写出函数指针类型int ()(int,int)然后在()里面加上数组名[]即可。

指向函数指针数组的指针
image.png
如何写指向函数指针数组的指针呢?我们可以参照上面的写法,先将数组名去掉,剩下int ()(int,int),然后根据它是数组指针加上(p)[]。

回调函数

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

qsort函数的使用:

qsort函数是一个库函数,底层使用的快速排序的方式,用来对数据进行排序,可以直接使用,可以用来排序任意类型的数据,它会将数据进行升序排序。
image.png
如上图,qsort()函数有4个参数,我们还看到里面有void类型的指针。void相当于一个垃圾桶,什么类型的指针都能存放。
image.png
例子:
image.png
为什么qsort函数里要用void类型的指针呢?因为我们并不确定我们要排序的数组是什么类型的元素,比如整形或者是结构体类型,用void它将更有通用性。

qsort函数里的第4个参数是一个函数指针,指向的函数需要我们自己设计实现,函数的作用是比较两个元素,返回一个整形数据,通过返回的数据来判断两个元素的大小。

如果返回值小于0(<0),那么e1所指向的元素会被排在e2所指向元素的前面。

如果返回值大于0(>0),那么e1所指向的元素会被排在e2所指向元素的后面。

如果返回值等于0(=0),那么e1所指向的元素和e2所指向的元素顺序不确定。
image.png
如上图,我们自己设计的函数cmp_int,当我们需要使用void*类型的数据时,我们需要先进行强制类型转换,然后才能进行解引用。
image.png
如上图,当我们需要比较的数据是结构体类型时,我们只需要改变qsort函数的第四个参数指向的函数,做出略微的改动,就能进行排序了。 qsort函数的第四个参数,也是一个回调函数。

更多qsort函数的内容,请观看下一篇博文。

目录
相关文章
|
前端开发
前段结课总结
前段结课总结
|
机器学习/深度学习 监控 安全
Jailbreak 36计————向天再借500分
本内容由IT老兵“老李”倾情奉献,结合《三十六计》智慧,深入剖析大语言模型越狱攻击的36种策略。每计包含思路、详解、案例、防御与点评,内容详实,实战性强,助你在“大模型安全挑战者计划”中脱颖而出。
1822 8
|
8月前
|
算法 安全 5G
uwb超宽带定位技术是什么?如何做到精准定位?从原理到优劣详解
UWB(超宽带)技术通过纳秒级脉冲实现厘米级高精度定位,抗干扰强、安全性高,可同时定位多目标,广泛应用于工厂、医院等场景,助力安全与效率提升,是室内定位的核心技术之一。如果您想进一步了解uwb超宽带技术和案例,欢迎搜索维构lbs智能定位~
|
存储 缓存 Oracle
崖山数据库YashanDB的共享集群机制初探
YashanDB共享集群是崖山数据库系统的核心特性,支持单库多实例并发读写,确保强一致性与高可用性。基于Shared-Disk架构和Cohesive Memory技术,实现数据页协同访问及资源控制。其核心组件包括YCK、YCS和YFS,提供金融级RPO=0、RTO&lt;10秒的高可用能力。通过自研“七种武器”(如页内锁、去中心化事务管理等),优化性能并解决读写冲突。相比Oracle RAC,YashanDB在TPC-C测试中性能高出30%,适用于金融、电信等关键领域,推动国产化替代进程。
崖山数据库YashanDB的共享集群机制初探
|
安全 Java Maven
如何使用jsoup实现网站登录,cookie保存,查询信息
【6月更文挑战第11天】如何使用jsoup实现网站登录,cookie保存,查询信息
700 1
|
SQL 缓存 API
SqlAlchemy 2.0 中文文档(五十六)(1)
SqlAlchemy 2.0 中文文档(五十六)
390 0
|
SQL 算法 中间件
sqlalchemy源码阅读-下篇
SQLAlchemy是Python SQL工具箱和ORM框架,它为应用程序开发人员提供了全面而灵活的SQL功能。它提供了一整套企业级持久化方案,旨在高效,高性能地访问数据库,并符合Pythonic之禅。项目代码量比较大,接近200个文件,7万行代码, 我们一起来挑战一下。
658 1
sqlalchemy源码阅读-下篇
|
存储 算法 定位技术
c++游戏制作指南(四):c++实现数据的存储和读取(输入流fstream)
c++游戏制作指南(四):c++实现数据的存储和读取(输入流fstream)
1141 0
|
网络协议 Shell 网络安全
iOS 逆向编程(九 - 1)通过 USB 连接登录 iPhone 以及端口映射
iOS 逆向编程(九 - 1)通过 USB 连接登录 iPhone 以及端口映射
883 0