C语言中qsort函数怎样使用呢

qsort(a, sizeof(a) / sizeof(char) - 1, sizeof(char), cmp);
■网友
qsort(偏移首地址,排序的元素总个数(注意千万不要溢出),元素大小(推荐sizeof关键字),比较函数(意即函数指针));
【C语言中qsort函数怎样使用呢】 注意比较函数原型制定的是 int cmp(const void*,const void*);就注定了必须在比较函数内把void*指针转换为有类型的(不然无法进行指针运算,意即解引用等诸如的操作),自己编写返回值,例如有element1,element2,返回大于零表示把元素1排在元素2前面,其他类推,元素1,元素2其实就是把待排序的数组中取两个元素放到了cmp函数的形参中来。
奥,我没有具体的代码,你自己去看看吧。
还有,我推测qsort()指定元素大小的那个参数,这个或许用来偏移定址,然后再赋值给cmp函数中对应的指针形参(当然,你需要把指针转换为你需要的类型)。为什么这么说呢,因为我发现用sizeof(int),然后cmp中指定char*类型那个的指针,两者不匹配,但是打印结果正确,无非就是每隔int 大小寻址赋值给char指针,因为int高位为零,在一定范围内,可以正确排序(实际使用中不要这样做,这样是为了测试)。
一个有意思的现象是超过了127(当char为有符号时),比如128就会排错,进一步验证了这种想法

■网友
把qsort的参数列表先看懂吧,第一个是首元素指针,第二个是元素个数,第三个是元素的size_t类型值,第四个是函数指针。楼上给出了答案也可参考《C Primer Plus》(第六版中文版)第16章:16.11.2


    推荐阅读