[英]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.