gpt4 book ai didi

将结构体与指针成员进行比较

转载 作者:行者123 更新时间:2023-11-30 15:19:02 24 4
gpt4 key购买 nike

我需要为具有指针成员的结构编写一个 qsort 比较函数。假设我有

struct foo2_struct
{
int a;
}

struct foo1_struct
{
int a;
struct foo2_struct *b;
}

这是我所拥有的:

int cmp_foo1(const void *a, const void *b)
{
struct foo1_struct foo1a = *((struct foo1_struct) a);
struct foo1_struct foo1b = *((struct foo1_struct) b);
int cmp = foo1a.a - foo1b.a;
if (cmp == 0)
{
if (foo1a.b == foo1b.b)
return 0;
//how to continue???
}
return cmp;
}

请注意,foo2_struct 成员b 不是唯一的,因为该类型的两个不同变量可以具有相同的b 值。

最佳答案

简单地替换

int cmp = a.a - b.a;
[...]
if (a.b == b.b)

int cmp = foo1a.a - foo1b.a;
[...]
if (foo1a.b == foo1b.b)

因为您必须使用结构而不是 void 指针...

编辑

此外,您可以比较结构内部的值,而不是指向结构的指针(但无论如何我不知道您的目标......)所以更换

if (foo1a.b == foo1b.b)

if (foo1a.b->a == foo1b.b->a)

注意:我让你处理 NULL 场景:)

关于将结构体与指针成员进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30892842/

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