c 中的 qsort() 函数中的 cmpfunc

cmpfunc in qsort() function in c

谁能给我解释一下 cmpfunc 是在 qsort 函数中使用的吗?此函数中的 ab 是什么,它们指向什么?

int cmpfunc(const void *a, const void *b)
{
    return(*(int*)a - *(int*)b);
}

acmpfunc 中的 b 是指向 const void 类型的指针。 cmpfunc 可以接受指向任何数据类型数组元素的指针。
void * 指针无法取消引用,因此在取消引用之前需要强制转换 int *

在这个输入中是 *void 并且在你的情况下你需要 comaper 整数。所以你需要转换类型。这就是为什么

     *(int *) a

可以是float类型

     *(float *) a 

等等其他类型...

你可以找到这个实现:

 int cmpfunc(const void *a, const void *b)
 {
  if(*(int *)a  <  *(int *)b) return -1;
  if(*(int *)a  == *(int *)b) return 0;
  if(*(int *)a  >  *(int *)b) return 1; 
}