因为max函数未定义。你必须自己实现max函数,才能使用它。可以写个函数,也可以用宏。比如在include下一句写上:#definemax(x,y)(xy?x:y)这句表示:当xy时,max(x,y)的值为x,反之,则为y。
1、第一个参数是需要排序的数组的基地址,因为是void*类型,所以此函数可以给任何类型的数组进行排序。
2、第二个参数是待排序的数量(size_t是一种特别的数据类型,可以近似理解为int型);第三个是单个数组元素的大小,即字节数,例如int型就是4或者sizeof(int)(sizeof的返回值类型就是sizeof),char型就是1或者sizeof(char)。
3、因为为了适用于各种数据结构,第一个参数将指向数组的指针强转成了void*类型,也即此时函数并不知道将要进行排序的数组内存储的是什么元素,因此我们需要显式地告诉它单个元素所占的长度。第四个参数是一个指向函数的指针,其作用是规定排序的规则,即按照什么样的方式进行排序。