文章目录
前言
本篇将会很有意思!
一、回调函数是什么?
回调函数就是一个通过函数指针调用的函数。
如果你把函数的指针(地址)作为参数传给一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另一方调用。
二、qsort使用举例
使用qsort函数排序整型数据
qsort函数能够实现任意类型数据的排列
使用qsort函数排序结构数据
我们来测试qsort函数排序结构体数据
结构体类型如下:
按照年龄来比较,我们有以下语句:
比较函数如下:
三、qsort的模拟实现
先看正常情况下,int型数组的比较大小:
我们发现,这种存在一些问题,需要改造:
1.元素的比较需要修改,有些类型比如说结构体无法用大于小于号来比较
2.交换的代码需要改变 (这个逻辑很巧妙,你往下看)
3.参数也得重新设计,这样只能接受整型数组,应该改为能接收任何数组
请注意,函数原型是BubbleSort(void* base, size_t sz, size_t width, int (*cmp)(const void *p1, const void *p2));
至此,参数的重新设计、比较大小,交换三个难点都已经解决了!
总结
这篇文章应该会让你对指针有个别样的认识
指针太重要了,下一篇我会以练习题为主来巩固