【发布时间】:2016-07-18 16:22:02
【问题描述】:
我想确切地知道第三个参数应该是什么,因为我从未见过类似的东西。
void sortPointers(void **ar, int n, int (*cmp)(const void *, const void *))
{
int j;
for (j = 1; j < n; j++)
{
int i = j - 1;
int *value = ar[j];
while (i >= 0 && cmp(ar[i], value) > 0)
{
ar[i+1] = ar[i];
i--;
}
ar[i+1] = value;
}
}
【问题讨论】:
-
这是一个函数指针。现在你应该知道要研究什么了。
-
第三个参数是一个(指向a的)比较函数,它接受两个元素进行排序并比较它们。如果元素是有序的,则给出一个负数(或在相等的情况下为 0)。如果元素的顺序错误,则给出肯定的结果,它们将被交换。也就是说,它的输出应该类似于
strcmp。 -
结帐
qsortdocumentation。它具有cmp作为参数,用于相同目的。 -
void**呃哦...@zac 你能提供那本书的标题,或者更好的是,显示排序函数的实际调用方式吗? -
这是一个函数的地址,它将比较两个元素以执行排序。该功能可能是您实现的功能,也可能是为您提供的其他功能。该功能必须符合所示的原型。
标签: c implementation insertion-sort