[英]cmpfunc in qsort() function in c
有人可以解释一下qsort
函数中使用的cmpfunc
吗? 此函数中的a
和b
是什么,它们指向什么?
int cmpfunc(const void *a, const void *b)
{
return(*(int*)a - *(int*)b);
}
cmpfunc
中的a
和b
是指向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.