gpt4 book ai didi

c - 指向 void* 的指针,以及通用的冒泡排序

转载 作者:行者123 更新时间:2023-11-30 17:50:13 24 4
gpt4 key购买 nike

我在我的讲座文件中找到了这段代码。这是一个通用函数,它获取比较函数和数组,并使用 BUBBLE SORT 对其进行排序

typedef Relation (*CmpFunction)(void*, void*);
void sort(void **array, int n, CmpFunction compare){
int i, j;
void* tmp;
assert(array !=NULL && compare != NULL);
for(i=0; i<n; i++) {
for(j=i+1; j<n; j++) {
if(compare(arr[i], arr[j])==Left) {
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
}

关系是:ENUM 类型(没兴趣)。我的问题是,为什么 sort() 得到

void**,

为什么不是

void*

。P.S 讲座的作者是故意的,但我无法理解。

最佳答案

它不是通用排序,它是 void * 数组的排序器。

因此,数组void **,意思是“指向void *的指针”。您可以取消引用它一次,array[0] 是第一个要排序的void *。当然,您不能取消引用 that,因为 void * 不支持这一点。

顺便说一句,标准库的 qsort() 是通用排序的一个更好的示例。

关于c - 指向 void* 的指针,以及通用的冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17405539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com