C中数组上的QSORT?

C中数组上的QSORT?,c,arrays,sorting,C,Arrays,Sorting,如果我有这样一个数组: 2, 4, 6, 0, 0, 0, 0, 0, 0 它看起来正确吗?是如果您在本例中指定3,它将只对前3个元素进行排序。是 对* 对 *假设您适当地定义了compare()。为什么不尝试一下,看看它是否能按预期工作 说明:qsort函数只获取指向数组的指针,而不是数组的长度。这就是为什么你必须通过的大小以及。在函数调用中,您声明数组有三个ints长,这就是qsort函数可以确定的全部内容。它不会访问超出该限制的任何内容。完整签名为: void qsort( voi

如果我有这样一个数组:

2, 4, 6, 0, 0, 0, 0, 0, 0
它看起来正确吗?

是如果您在本例中指定3,它将只对前3个元素进行排序。

对*



*假设您适当地定义了
compare()

为什么不尝试一下,看看它是否能按预期工作

说明:
qsort
函数只获取指向数组的指针,而不是数组的长度。这就是为什么你必须通过的大小以及。在函数调用中,您声明数组有三个
int
s长,这就是
qsort
函数可以确定的全部内容。它不会访问超出该限制的任何内容。

完整签名为:

void qsort(
   void * base,
   size_t num,
   size_t width,
   int (__cdecl *compare )(const void *, const void *) 
);

要对数组的特定连续范围进行排序,只需传入不同的
base
(指向该范围起始元素的指针)和
num
(该范围内的元素数)。

这里有一个新颖的想法:将它放在C程序中,看看会发生什么!你说什么?你试过了吗?对经验主义者来说:问题是,如果你考虑到可能的情况,尝试并不能证明任何事情。任何“证据”都可能是巧合。我想说标准文档有点强,仅仅尝试是不够的。这是一个信号,可能它是通过设计工作的,可能在任何地方都有未定义的行为,巧合地导致程序输出预期的答案,也许还有其他原因。因此,了解背景,特别是在使用C或C++时,这是一个好消息。
void qsort(
   void * base,
   size_t num,
   size_t width,
   int (__cdecl *compare )(const void *, const void *) 
);