qsort函数下的return *(int *)a-*(int *)b; 是什么意思???

有这样 一组数23,44,12,42,14,35,47,31,9,20
现在要以一个整数的各位数字之和的大小为依据,以小到大排序,用qsort()函数这程序怎么写?????
我想知道这条语句*(int *)a-*(int *)b;它是怎么执行的,像是一个数组的话,它能返回很多个值吗???
这里应该是comp函数的返回值,qsort以一定的标准进行排序,而comp就是这个标准

为了qsort适用于任何结构的数组,comp函数的参数是两个const void*类型的变量,使用时根据结构的不同进行转换,这里显然是在排序int型数组

*(int*)a的意思是,将简虚冲a转换为int*类型,即将空类型指针数据转换为int型指针数据,然后再解指针,得到其值,返回a-b的值,comp会根据誉空这个值来判断a和b的顺序,从而完成排序

如果你在comp函数中加上输出,就可以很明显看到排序的过程了

你可以试一下a-b和b-a分别是从小到大和从大到小,qsort是quick sort的简写,其实就是快速排序,所以每次就比较两个值

qsort的调用方法是
void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));
base是拦歼指针入口,nelem是排序的元素个数,width是元素大小,comp就是比较函数了

所以这里如果int a[10]={23,44,12,42,14,35,47,31,9,20};
qsort(a, 10, sizeof(int), comp);
这样就可以排序了
return 返回值呀,

*(int *)a-*(int *)b 是将a 和b 的值作为一个int型地皮笑址,最为直接查找的寻址方式,找携闷到的辩握弯值想减,在返回
返回整数a减去整数b的结果