Microsoft KB Archive/43971

= INFO: qsort: Parameters to the Compare Function =

Article ID: 43971

Article Last Modified on 12/12/2003

-

APPLIES TO

 The C Run-Time (CRT), when used with:  Microsoft Visual C++ 1.0 Professional Edition

 Microsoft Visual C++ 1.5 Professional Edition

 Microsoft Visual C++ 1.0 Professional Edition

 Microsoft Visual C++ 2.0 Professional Edition</li></ul>

 Microsoft Visual C++ 4.0 Standard Edition</li></ul>

 Microsoft Visual C++ 5.0 Standard Edition</li></ul>

 Microsoft Visual C++ 6.0 Service Pack 5</li></ul> </li></ul>

-

<div class="notice_section">

This article was previously published under Q43971

<div class="notice_section">

<div class="summary_section">

SUMMARY
When you define or prototype a comparison function for the run-time library function qsort, the formal parameters should be of type &quot;const void *&quot; 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 * ) ;

Keywords: kbinfo kbcrt KB43971

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.