cmp func 似乎都可以工作;无法理解在 qsort_cmp 的情况下如何解析 int* 类型的 arg1。据我所知:int* 被传递给 qsort_cmp ,在那里它被更改为 void*,然后在 return 语句中转换为 struct s*。到目前为止没问题,但是演员应该有一个名为 b 的成员,它的演员类型有,但它的实例没有......
struct s { int a, b; };
int qsort_cmp(const void *r1, const void *r2) {
return ((struct s*) r1)->b - ((struct s*) r2)->b;
}
int bsearch_cmp(const void *key, const void *r2) {
return *(int*) key - ((struct s*) r2)->b;
}
/* themap is already qsorted */
int k = 'w'//hatever;
void *ret = bsearch(&k, themap, thenumber_ofelements, sizeof(one_element), qsort_cmp);