目录
一.回调函数
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(采用冒泡的方式)。
后记
最近有点懈怠了,抱歉抱歉
争取在假期结束前把比特学过的博客补完
兄弟们共勉!!!