2
在快速排序:C++中是什麼在快速排序尺寸參數做
void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*));
文檔解釋:
size
Size in bytes of each element in the array.
size_t is an unsigned integral type.
但通常的qsort被援引爲qsort(...,...,sizeof(int),...)
,或qsort(...,...,sizeof(char *),...)
如果我理解正確,因爲字符串的大小不能確定,所以它不再重要,而是使用sizeof(char *)作爲類型聲明。
任何解釋?
您給'qsort()'一個連續的內存緩衝區,其中包含您要排序的「項目」。 size參數是該緩衝區中包含的項目類型的字節寬度(以字節爲單位)。通常它是'sizeof(type)',其中'type'是數組的基類型。例如:對一個'int arr [10]進行排序;'會爲項目數量傳遞'10',對size-參數傳遞'sizeof(int)'。 'qsort()'使用這兩個數字來知道如何在另一個無類型('void *')內存緩衝區中從一個項目移動到另一個項目。 – WhozCraig 2013-04-05 02:30:04
此外,使用您的示例,對char指針數組「char * ar [10]」進行排序,您可以使用sizeof(char *)作爲大小參數,在這種情況下,使用「10」作爲'num'參數。大多數人關於'qsort()'的最令人困惑的事情是在每個項目的提供的緩衝區內用*地址*調用比較器。在int ar []的情況下,它將是一個'int *',但是在容器保存指針類型的情況下,它是指針的*地址,或者是char * ar []一個'char **'。對於一些不熟悉指針指針的人來說,這可能有點不安。 – WhozCraig 2013-04-05 02:36:55
@WhozCraig:聽起來像是對我的回答。 – sth 2013-04-05 02:50:34