当涉及到指针时,我是初学者。最近,我被要求编写一个函数,该函数将接收指向数组的开始和结束指针,然后使用qsort对它们进行排序。这就是我所拥有的:
int isort(int* begin, int* end)
{
int length = 0;
while((begin != end)){
begin++;
length++;
}
size_t array_len = length;
qsort((void *)begin, array_len, sizeof(int), int_cmp);
return length;
}
所以我的想法是让while循环得到数组的长度(这是有效的),但我正在努力在实际的qsort部分关于什么放入第一个参数(我认为我的问题是那里)。对于错误,我得到了一堆内存映射和回溯的东西。
感谢您的帮助。
答案 0 :(得分:3)
你在循环中修改begin
,所以你丢失了指针,最后用错误的指针调用qsort
。这样的事情怎么样:
int isort(int * const begin, int * const end)
{
qsort(begin, end - begin, sizeof(int), int_cmp);
return end - begin;
}