深入理解指针(4)

目录

一.回调函数

1.1 回调函数的基本概念

1.2 使用回调函数优化代码的例子 

二.qsort使用举例 

2.1使用qsort函数排序整型数据

2.2  使用qsort排序结构数据

三.qsort函数的模拟实现 

后记 


一.回调函数

1.1 回调函数的基本概念

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

在C语言中,函数指针是指向函数的指针变量,它存储了函数的地址,因此可以通过这个指针来调用函数。当我们将一个函数作为参数传递给另一个函数,并在适当的时候通过该参数(即函数指针)调用它时,这个被传递的函数就被称为回调函数。 

1.2 使用回调函数优化代码的例子 

在这个例子中,我们有一个简单的程序,它根据用户的选择(通过命令行参数)来执行加法、减法、乘法或除法。不使用回调函数时,我们可能会使用一系列的if-else语句或switch语句来根据用户的选择调用相应的函数。 

 在这个优化后的版本中,我们定义了一个回调函数类型,并在main函数中根据用户输入动态地选择并调用这个回调函数。

二.qsort使用举例 

2.1使用qsort函数排序整型数据

在这个例子中,compare 函数是 qsort 的比较函数,它比较两个 int 类型的值。qsort 函数的四个参数分别是:

指向要排序的数组(或数组的起始地址)的指针。

数组中元素的数量。

每个元素的大小(以字节为单位)。

一个指向比较函数的指针,该函数用于比较两个元素。

qsort 函数通过调用比较函数来决定元素的排序顺序。在比较函数中,我们比较两个元素(通过解引用传递给比较函数的 void* 指针得到),并返回一个整数来表示这两个元素的大小关系。如果第一个元素小于第二个元素,则返回负数;如果第一个元素大于第二个元素,则返回正数;如果它们相等,则返回 0。

qsort 函数会根据比较函数的返回值来重新排列数组中的元素,直到整个数组都排序完成。在这个例子中,我们得到了一个升序排列的整数数组。

2.2  使用qsort排序结构数据

在这个例子中,compareByAge函数接收两个const void*类型的参数,并通过强制类型转换将它们转换为Person*类型的指针,这样就可以访问结构体中的age字段了。比较函数通过返回年龄差的整数值来确定排序顺序。

然后,在main函数中,我们创建了一个Person类型的数组,并使用qsort函数对其进行排序,排序的依据是结构体中的age字段。最后,我们使用一个循环来打印排序后的结果。

三.qsort函数的模拟实现 

使用回调函数,模拟实现qsort(采用冒泡的方式)。 

 

 

后记 

最近有点懈怠了,抱歉抱歉

争取在假期结束前把比特学过的博客补完 

兄弟们共勉!!! 

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值