void funct(int(* compare)(a,b))

时间:2014-05-31 20:47:45

标签: c struct compare declaration

我正在尝试做一个我老师用C给我的练习,但我被困在这里

这是我的代码:

typedef struct First_s
{
    double a;
    double b, c;
    double d;
} First_t;

typedef struct Second_s
{
    char e[10];
    long f;        
    First_t g; 
} Second_t;

int compare(Second_t *x, Second_t *y)
{
    if(x.g.b >y.g.b){
        return 1;
    }else{
        return 0;
    }
}
void sortList(Second_t list[], long len, int (*compare) (Second_t *a, Second_t *b)){
}

有人可以告诉我如何使用这个*比较功能。 我在互联网上寻找它,但我真的不知道如何找到它,因为我不知道如何调用这种功能。

谢谢你:)

2 个答案:

答案 0 :(得分:1)

由于篇幅原因,我必须切换到这个答案。

如果您从上面的内容中看到想要获得类似

的内容
Second_t    somelist [5000000000] ;
. . . .

sortList (somelist, 5000000000, compare) ;

您没有说明这一点,但上下文表明目标是拥有一个可以处理不同比较方法的通用排序函数。比较方法被指定为sortList()的函数参数。

 Second_t a, b ;

 if (compare (&a, &b))

应该工作。

答案 1 :(得分:1)

您可以在sortList中调用compare函数,如下所示:

int a, b;
(*compare)(&a,&b)