首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >指针(2)

指针(2)

作者头像
秦jh
发布于 2024-01-19 02:26:25
发布于 2024-01-19 02:26:25
930
举报
文章被收录于专栏:c语言,c++c语言,c++

函数指针数组

函数指针数组是一个用来存放函数指针(地址)的数组。

如上图,是将两个函数指针存入数组中。如何写函数指针数组名呢?我们可以先写出函数指针类型int (*)(int,int)然后在(*)里面加上数组名[]即可。

指向函数指针数组的指针

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

回调函数

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

qsort函数的使用:

qsort函数是一个库函数,底层使用的快速排序的方式,用来对数据进行排序,可以直接使用,可以用来排序任意类型的数据,它会将数据进行升序排序。

如上图,qsort()函数有4个参数,我们还看到里面有void*类型的指针。void*相当于一个垃圾桶,什么类型的指针都能存放。

例子: 

为什么qsort函数里要用void*类型的指针呢?因为我们并不确定我们要排序的数组是什么类型的元素,比如整形或者是结构体类型,用void*它将更有通用性。 

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

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

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

如果返回值等于0(=0),那么e1所指向的元素和e2所指向的元素顺序不确定。

如上图,我们自己设计的函数cmp_int,当我们需要使用void*类型的数据时,我们需要先进行强制类型转换,然后才能进行解引用。

如上图,当我们需要比较的数据是结构体类型时,我们只需要改变qsort函数的第四个参数指向的函数,做出略微的改动,就能进行排序了。 qsort函数的第四个参数,也是一个回调函数。

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
燃烧的指针(三)
🌈个人主页:Rookie Maker 🔥 系列专栏:c语言 🏆🏆关注博主,随时获取更多关于IT的优质内容!🏆🏆
编程交流
2024/05/11
1140
燃烧的指针(三)
指针进阶(2)
那要把函数的地址存到一个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?
用户10923087
2024/01/23
1230
指针进阶(2)
【C语言】⒉万字带你玩转高阶指针『0»1』
🚀write in front🚀 ---- 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金 || InfoQ创作者~周榜34»总榜2815🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页:打打酱油desuCSDN博客💬 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:【C】系列_打打酱油desu-CSDN博客[〇~①]🎓
謓泽
2022/12/12
6560
【C语言】⒉万字带你玩转高阶指针『0»1』
【C语言新手村】小怪升级 指针plus版
这里其实就是pa先和“ * ”结合,因为“ [ ] ”他的优先级高于“ * ”
f狐o狸x
2024/11/19
580
【C语言新手村】小怪升级 指针plus版
【C语言】指针进阶知识终章
其实这看起来是难以理解的,所以我们可以用typedf(起别名)来简化一下,更加容易认识代码:
平凡的人1
2022/11/15
5370
【C语言】指针进阶知识终章
指针进阶详解
理论上字符串第一个字符被改为w,实际上代码无法正常运行,直接挂掉。所以避免被修改,我们const修饰字符指针,避免其被改。
用户10517932
2023/10/07
2500
指针进阶详解
第六节——从深层剖析qsort的使用(让你不再害怕指针)
如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现⽅直接调用,而是在特定的事件或条 件发生时由另外的⼀方调用的,用于对该事件或条件进行响应。
egoist祈
2025/01/23
890
第六节——从深层剖析qsort的使用(让你不再害怕指针)
关于我、重生到500年前凭借C语言改变世界科技vlog.15——深入理解指针(4)
如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数
DARLING Zero two
2024/11/19
820
关于我、重生到500年前凭借C语言改变世界科技vlog.15——深入理解指针(4)
带你深入了解c语言指针后续
以数组指针为例: 数组指针示例:写一个指向 int arr[10] 数组的数组指针;
初阶牛
2023/03/01
4080
C语言进阶——指针进阶
指针就是地址,而凡是存储在内存中的值都会有属于自己的地址,指针指向地址,这样我们就能通过指针间接操作变量。我们在指针初阶中介绍了指针的基本概念:如指针大小、野指针问题、指针间的关系运算等,在我们的指针进阶中,将会对指针进行进一步剖析,见识更深的指针!🎊🎊
北 海
2023/07/01
2150
C语言进阶——指针进阶
【指针进阶三】实现C语言快排函数qsort&回调函数
因为cmp比较函数需要使用者自行设计,所以对于不同的使用者在qsort函数里传给cmp函数的参数类型可能是任何类型的指针,所以在cmp比较函数内得用void*类型的指针来接收,使用时只需将void* 类型的指针做出相应的强转即可。
MicroFrank
2023/01/16
5220
C语言指针深度解剖
指针是C语言的灵魂,深入理解指针,是学好学会C语言的重要前提。因此,本文将重点讲解C语言指针的深度内容。
二肥是只大懒蓝猫
2023/03/30
5220
C语言指针深度解剖
抽丝剥茧C语言(高阶)指针的进阶
数组指针是指针?还是数组? 答案是:指针。 我们已经熟悉: 整形指针: int * pint; 能够指向整形数据的指针。 浮点型指针: float * pf; 能够指向浮点型数据的指针。 那数组指针应该是:能够指向数组的指针。 下面代码哪个是数组指针?
有礼貌的灰绅士
2023/03/28
4470
抽丝剥茧C语言(高阶)指针的进阶
【C指针进阶】(C精髓)——对指针的更进一步深入剖析(图文近2w详解)
本文承接了上文:初阶指针——全面了解指针,在此基础上对指针进行更深一步的剖析,相信我,也请相信你自己!
诺诺的包包
2023/02/17
6310
【C指针进阶】(C精髓)——对指针的更进一步深入剖析(图文近2w详解)
C语言进阶-回调函数
目录 前言 回调函数 回调型计算器 回调冒泡排序(模拟qsort库函数) qsort函数原型 compar参数 代码演示  冒泡排序(bubble_sort) ---- 前言 ---- 本文主要讲解 回调函数的理解 回调实现计算器 qsort各种功能的使用 冒泡排序各种功能的实现 回调函数 ---- 定义 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针(地址)作为参数传递给另一 个函数, 当这个指针被用来调用其所指向的函数时,我们就说这是回调函数 回调函数不是由该函数的实现
用户9645905
2022/11/30
1K0
C语言进阶-回调函数
C进阶:指针(2),qsort函数,模拟实现冒泡算法
要想理解回调函数,就要先知道什么是函数指针,函数指针详见:http://t.csdn.cn/oYiuC
aosei
2024/01/23
1460
C进阶:指针(2),qsort函数,模拟实现冒泡算法
【C语言】指针&&二级指针&&数组指针&&指针数组详解
我们可以通过&(取地址操作符)取出变量的内存起始地址,把地址可以存放到一个变量中,这个变量就是指针变量
用户10925563
2024/06/04
1.7K0
【C语言】指针&&二级指针&&数组指针&&指针数组详解
拿捏指针(三)
在这之前我们学习了《拿捏指针(一)》,《拿捏指针(二)》没看过的可以去看看哟,接下里我们将指针最后一篇,《拿捏指针(三)》,看完直接捏爆指针。
秋邱
2024/10/09
1170
拿捏指针(三)
【简介指针】
1·可想而知便或有个相似的名字出现在我们脑海中,那便就是指针数组,它和整型数组或者字符型数组一样是个数组;如:
羑悻的小杀马特.
2025/01/23
830
【简介指针】
C语言进阶——指针
str3和str4指向的是一个同一个常量字符串。C/C++会把常量字符串存储到单独的一个内存区域, 当几个指针,指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。所以str1和str2不同,str3和str4值相同,地址不同
小李很执着
2024/06/15
1960
C语言进阶——指针
相关推荐
燃烧的指针(三)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档