qsort用零填充数组?

Gen*_*Tel -2 c sorting qsort

我试图排序一组无符号长.但是,由于某种原因,qsort用零填充整个数组而不是对它进行排序.我将展示对函数,比较器和GDB的调用.

此图显示了qsort之前和之后的数组,以及我对函数的调用.

GDB

这是电话:

qsort(scores[c], sizeof(scores[c]), sizeof(scores[c][0]), comparator);
Run Code Online (Sandbox Code Playgroud)

这是我的比较器函数,称为比较器:

int comparator(const void *p, const void *q)
{
      if( *((unsigned long *)p) < *((unsigned long *)q)){
          return -1;
      }
      else if( *((unsigned long *)p) == *((unsigned long *)q)){
          return 0;
      }
      else{
          return 1;
      }
}
Run Code Online (Sandbox Code Playgroud)

是什么导致了这一点,我该怎么办呢?

Bo *_*son 5

qsort参数sizeof(scores[c])给出了以字节为单位的大小,而不是要排序的元素数.

你可能会得到许多超出范围的访问,恰好可以获得零.