回调函数和qsort函数
回调函数
一个通过函数指针调用的函数(就是被调的那个函数)
最简单的例子就是计算器了
如图
"qsort"
之前的冒泡排序只适应于整型的排序,但还有一种函数可以用来比较各种类型
它就是"qsort"函数,它其实也是一种回调函数
先来看一下冒泡排序的实现:如图
接下来看 qsort函数(默认是升序)
顾名思义就是 quick sort
"qsort"的功能是:排序(什么类型都能排:char,double,结构体)
之前说的比较字符串不能用(>, <,=,<=,>=,!= )来比较
只有两种方法
1.strcmp函数
2.结构体
现在又多了一种 3.qsort
qsort()内有四个参数
1.要排序的数组的首元素地址
2.数组元素的个数 eg:sizeof(arr)/sizeof(arr[0])
3.元素类型的字节数 eg:sizeof(int)
4.函数指针(函数的地址/函数名(之前说过&add与add是相同的))
(这个函数的参数(void*p,void*p))
(返回类型是"int"这个int类型的数只有三种结果 >0,<0,==0)
这个函数的作用是比较数组内各元素(p1-p2>0)(p1 - p2 < 0)(p1-p2==0)
因为 void*p是空指针,所以要强制类型转化变成*(int*)p
如图:这是整型
这是字符型
这是字符串
这是结构体
这里要注意比较字符串的函数strcmp是通过比较字符的ascii值来比较的
大家还可以想想怎么模拟实现“qsort”