#include<stdo.h> #include<stdlib.h> //库里面的qsort()函数 //解释: //void qsort(void* base, //base指向要排序的数组的第一个对象的指针(地址),转换为 .void* // size_t num, //排序数据元素个数。 // size_t size,//数组中每个元素的大小(以字节为单位)。 // int (*compar)(const void*a, const void*b));//比较待排序数据中的2个元素的函数 //四个参数,第四个参数是函数指针,因为int(*)(); struct Stu { char name[20]; int age; }; int qsort_ci(const void* a, const void* b) { return ((struct Stu*)a)->age - ((struct Stu*)b)->age; } int qsort_ci2(const void* a, const void* b) { return strcmp(((struct Stu*)a)->name, ((struct Stu*)b)->name); } void test2() { //使用qsort()函数排序结构体数据 struct Stu s[3] = { {"z家辉儿子",22}, {"c幸宾儿子",22}, {"j江丰儿子",23}}; int sz = sizeof(s) / sizeof(s[0]); //按照年龄排序 qsort(s, sz, sizeof s[0], qsort_ci); //按照名字排序 qsort(s, sz, sizeof s[0], qsort_ci2); } int main() { test2(); return 0; }