0

下面是我在 Apple 文档中看到的示例,对如何调用功能感到困惑qsort_b?需要作为 const void *l&传递的参数是什么const void *r

char *myCharacters[3] = { "TomJohn", "George", "Charles Condomine" };
qsort_b(myCharacters, 3, sizeof(char *), ^(const void *l, const void *r) {
    char *left = *(char **)l;
    char *right = *(char **)r;
    return strncmp(left, right, 1);
})
4

1 回答 1

2

qsort根据文档,与标准 C 库的区别在于qsort_bqsort_b采用block,而不是函数指针:

void qsort(void *base, size_t nel, size_t width, int (*compar)(const void *, const void *));

void qsort_b(void *base, size_t nel, size_t width, int (^compar)(const void *, const void *));

该块的目的与比较函数的目的相同——确定数组的两个元素是否相等,或者如果不相等,则哪个大于另一个。

const void *l&需要传递哪些参数const void *r

传递这些参数的不是你:这些参数是通过qsort_b. 第一个参数是被比较的左边元素的值;第二个是右边的元素。

于 2014-07-22T10:28:53.670 回答