用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));
各参数:
1 待排序数组首地址
2 数组中待排序元素数量
3 各元素的占用空间大小
4 指向比较函数的指针 : 注意这里的比较函数必须是返回int型,且2个形参都是 const void * 类型 ,我们在对比较函数进行实现的时候必须告诉函数传入形参的具体指针类型。
例如:我们要对字符串数组进行排序
1 char** strNum = new char*[lenght]; //指向字符指针的指针,即字符串的数组 2 3 qsort(strNum ,lenght ,sizeof(char*), compare); 4 5 int compare(const void* str1 , const void* str2)//传入形参时没有告诉函数具体类型,这里的str1和str2是strNum 数组元素的指针,所以因该是char**类型。 6 { 7 return strcmp( *(char**)str1,*(char**)str2 );//先将形参转换成实际类型,然后进行操作,这里是进行解引用,得到字符串值,调用strcmp函数对字符串进行比较。 8 }
原文:http://www.cnblogs.com/csxcode/p/3725818.html