你能对数组的一部分进行排序吗?

Con*_*nor -1 c arrays sorting comparison qsort

我想要qsort一个整数数组中的前 100 个元素,而其余元素保持不变。

我目前正在尝试通过以下调用来做到这一点:

int cmpfunc(const void *a, const void *b)
{
  int xi = *(const int *) a;
  int yi = *(const int *) b;
  
  return (xi - yi);
}

int my_array[100+some_size];
memset(my_array, 0, sizeof(my_array));
qsort(my_array, 100, sizeof(int), cmpfunc);
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了分段错误。x在 C 中可以对数组的第一个值进行排序吗?

mkr*_*er1 5

从函数的角度来看,qsort前 100 个之后是否还有更多数组元素没有什么区别,因为它只获取指向数组开头的指针以及起始指针之后的元素数量。

所以,是的,假设可以对包含 100 个元素的数组进行排序,那么也可以对较大数组的前 100 个元素进行排序。