#include <stdlib.h>
typedef struct {
int val;
int key;
} st_t;
int *cmpfunc(void *a, void *b)
{
st_t *tmp1 = (st_t *)a;
st_t *tmp2 = (st_t *)b;
//return (st_t *)a->val - (st_t *)b->val;
return tmp1->val - tmp2->val;
}
int main()
{
st_t arr[3] = {0};
arr[0].val = 4;
arr[0].key = 0;
arr[1].val = 6;
arr[1].key = 1;
arr[2].val = 9;
arr[2].key = 2;
qsort(arr, 3, sizeof(arr[0]), cmpfunc);
for (int i = 0; i < 3; i++) {
printf("arr[%d].val = %d, key = %d \n", i, arr[i].val, arr[i].key);
}
return 0;
}
标准输出:
arr[0].val = 4, key = 0 arr[1].val = 6, key = 1 arr[2].val = 9, key = 2