簡體   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