gpt4 book ai didi

c - 如何将 const void* 转换为结构元素?

转载 作者:行者123 更新时间:2023-12-04 11:47:24 24 4
gpt4 key购买 nike

我有我在 qsort() 中使用的比较函数,如下所示:

int compar(const void *p, const void *q){
interval a,b;

*p = (interval)a
*q = (interval)b;

if(a.extrem[1] < b.extrem[0])
return -1;
if(b.extrem[1] < a.extrem[0] )
return 1;

return 0;
}

我的结构如下:
typedef struct interval{
double extrem[2];
} interval;

我在函数比较中尝试了许多“转换”的变体,但都失败了。我的问题很明显,如何将 const void* 强制转换为结构元素?我知道这似乎是一个非常基本的问题,但我在任何地方都找不到明确的答案,我也是新手。任何帮助都非常感谢。

最佳答案

你很近...

typedef struct interval {
double extrem[2];
} interval;

int compar(const void *p, const void *q) {
const interval *a = p, *b = q;

if(a->extrem[1] < b->extrem[0])
return -1;
if(b->extrem[1] < a->extrem[0])
return 1;
return 0;
}

顺便说一句,没有一个 Actor ,这将在 gcc -Wall. 下完全干净

更新... Tavian说得好,这不是传递排序,所以你的集合在技术上有 no partial order.但是,根据您的数据和目标,即使如此,qsort 也可能返回有用的结果。

关于c - 如何将 const void* 转换为结构元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37466501/

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