【问题标题】:How to invoke this function?如何调用这个函数?
【发布时间】:2014-07-22 10:23:01
【问题描述】:

我在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);
})

【问题讨论】:

    标签: objective-c objective-c-blocks cextension


    【解决方案1】:

    根据文档,来自标准 C 库的 qsortqsort_b 之间的区别在于 qsort_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 *));
    

    block的作用与比较函数的作用相同——判断数组的两个元素是否相等,如果不相等,则哪个大于另一个。

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

    传递这些参数的不是您:这些参数由qsort_b 传递回您的比较块。第一个参数是被比较的左边元素的值;第二个是右边的元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-21
      • 2022-01-15
      • 2019-01-27
      • 1970-01-01
      • 2013-07-11
      • 2014-11-13
      • 2011-07-15
      • 2022-01-25
      相关资源
      最近更新 更多