The array must first be sorted in increasing order according to the specified comparison function pointed to by compar. Two arguments are passed to the comparison function pointed to by compar. The two arguments point to the objects being compared. Depending on whether the first argument is less than, equal to, or greater than the second argument, the comparison function must return an integer less than, equal to, or greater than 0. It is not necessary for the comparison function (compar) to compare every byte in the array. Therefore, the objects in the array can contain arbitrary data in addition to the data being compared. Since it is declared as type pointer-to-void, the value returned must be cast or assigned into type pointer-to-object.