INFO: qsort(): Parameters to the Compare Function (43971)



The information in this article applies to:

  • The C Run-Time (CRT), when used with:
    • Microsoft Visual C++ for Windows, 16-bit edition 1.0
    • Microsoft Visual C++ for Windows, 16-bit edition 1.5
    • Microsoft Visual C++, 32-bit Editions 1.0
    • Microsoft Visual C++, 32-bit Editions 2.0
    • Microsoft Visual C++, 32-bit Editions 4.0
    • Microsoft Visual C++, 32-bit Editions 5.0
    • Microsoft Visual C++, 32-bit Editions 6.0

This article was previously published under Q43971

SUMMARY

When you define or prototype a comparison function for the run-time library function qsort(), the formal parameters should be of type "const void *" because qsort() doesn't know the type of data that it is dealing with. Internally, qsort() is dealing with void pointers only. The const directive is there because the compare routine shouldn't modify the values that are being compared. Inside of your compare routine, you must cast the void pointers back to pointers of the correct type.

If the declaration of the array to be sorted is:
   ELEMENT_TYPE arr[10] ;
where ELEMENT_TYPE is the type of the array elements, then the function for comparison should be prototyped as follows:
   int comp( const void *, const void * ) ;

Modification Type:MajorLast Reviewed:12/12/2003
Keywords:kbCRT kbinfo KB43971 kbAudDeveloper