以下代碼取自here。爲什麼不需要將參數傳遞給qsort比較器函數?
* qsort example */
#include <stdio.h>
#include <stdlib.h>
int values[] = { 40, 10, 100, 90, 20, 25 };
int compare (const void * a, const void * b)
{
return (*(int*)a - *(int*)b);
}
int main()
{
int n;
qsort (values, 6, sizeof(int), compare);
for (n=0; n<6; n++)
printf ("%d ",values[n]);
return 0;
}
我們有一個比較函數與其簽名中的參數,但是當我們在qsort中調用它時,沒有參數被傳遞。 a
和b
的值是如何傳遞給函數的?由於
與你的問題沒有關係,但是你的比較函數有一個主要的錯誤,除非你事先知道你的數組中的整數範圍受到'INT_MAX'的限制。 – 2012-07-06 03:42:12
@R ..我只是把它從cpluscplus.com,謝謝您的好意 – Steve 2012-07-07 00:17:00
另一個原因cplusplus.com是C和C++信息的殘暴惡劣源... – 2012-07-07 00:59:41