繁体   English   中英

C中的qsort()函数中的cmpfunc

[英]cmpfunc in qsort() function in c

有人可以解释一下qsort函数中使用的cmpfunc吗? 此函数中的ab是什么,它们指向什么?

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

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

在这种输入是*无效 ,你需要comaper整数你的情况。 因此,您将需要转换类型。 这就是为什么

     *(int *) a

它可以是浮点型

     *(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; 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM