如果我有这样的数组:
2, 4, 6, 0, 0, 0, 0, 0, 0
qsort(arrNumbers, 3, sizeof(int), compare)
会做这个工作吗?编辑: 我的比较功能是:
int comp(const int * a, const int * b)
if(a==b)
{
return 0;
}
else
{
if(a<b)
{
return -1;
}
else
{
return 1;
}
}
看起来是对的吗?
答案 0 :(得分:7)
是
是 *
是
<小时/> *假设您正确定义
compare()
。
答案 1 :(得分:2)
为什么不尝试一下,看看它是否按预期工作?
说明:qsort
函数只获取数组的指针,但没有说明数组的长度。这就是你必须传递大小的原因。在函数调用中,您声称数组的长度为int
长,并且所有qsort
函数都可以确定。它不会访问超出该限制的任何内容。
答案 2 :(得分:2)
完整的签名是:
void qsort(
void * base,
size_t num,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
要对数组的特定连续范围进行排序,只需传入一个不同的base
(指向该范围的起始元素的指针)和num
(元素数)在范围内。)
答案 3 :(得分:1)
是的,如果你在你的情况下指定3,它只会对前3个元素进行排序。