gpt4 book ai didi

c - 在 C 中使用 qsort

转载 作者:行者123 更新时间:2023-11-30 15:20:23 25 4
gpt4 key购买 nike

我在编译使用“qsort”的程序时遇到问题我必须对指向结构(称为 Element)的动态指针数组进行排序当我尝试编译该程序时,出现以下错误:“错误:从不兼容的指针类型传递‘qsort’的参数 4...”

我的比较函数(用于 qsort)是:

int compareElements(const void **e1, const void **e2)
{
Elemenet* element1 = *(Element** const)e1;
Elemenet* element2 = *(Element** const)e2;
if (element1->key < element2->key)
return -1;
...................
}

谁能说一下出了什么问题吗..?我已经尝试了很多改变比较函数的模式,但仍然没有效果

谢谢

最佳答案

这是 qsort 函数的官方原型(prototype)。

void qsort(void *base, 
size_t nmemb,
size_t size,
int (*compar)(const void *, const void *));

所以比较函数原型(prototype)必须是:

int compare( const void*, const void* );

这两个 const void* 参数实际上指向什么取决于正在排序的内容。

对于二维数组,其中第一个索引是指针数组

那么 const void* 将是那些指针。

因此比较函数必须将参数转换为实际指向的内容。然后对要排序的字段进行比较。

返回码+1,0,-1与strcmp()的返回码含义完全相同

关于c - 在 C 中使用 qsort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30042545/

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