1. 回调函数是什么?
2. qsort使⽤举例
3. qsort函数的模拟实现
1. 回调函数是什么?
1. 回调函数是什么?
回调函数就是⼀个通过函数指针调⽤的函数。
如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条 件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。
当把函数指针(a)的地址传递给(b)函数,当(b)指针用来调用这个(a)函数时。被调用的函数就是回调函数。
这里把Add的地址传给pf,pf相当于指向了Add。调用了这个函数 就是4+5
举例:计算器
当Add传给pf时进行加法;当Sub传给pf进行减法;当Mul传给pf算乘法;当Div传给pf算除法。
2. qsort使⽤举例
冒泡排序:
这是升序的排法。
如果需要降序则只要把 if(arr[j]>arr[j+1]) 改成 if(arr[j]<arr[j+1])
但是bubble_sort只能排序整形数组。
而qsort可以排序任意函数
2.1 使⽤qsort函数排序整型数据
qsort基本格式
这里的e1指向一个元素 e2指向另一个元素
void*类型指针不能解引用操作符,也不能+/-整数操作符
使用之前要强制类型转换。
优化代码:
2.2 使⽤qsort排序结构数据
按照年龄排序
按照姓名排序:
2.3改写冒泡排序
3. qsort函数的模拟实现
这里ps->n与(*ps).n一样用处