C语言 简单使用qsort 比较结构体字符串大小

#include
#include
#include
//qsort C语言封装好的冒泡排序 可比较任何类型
struct stu{
    char name[20];
    int age;
};
//用户自己写的函数。函数名字也作为函数指针使用。是qsort函数的第四个参数
// void *代表可以接受任意类型的地址 但由于不清楚所占字节 所以不能对void*进行解引用和加减整数操作
//指针类型决定解引用时所访问空间大小   也决定指针加减整数时移动多大内存
int Compare_st(const void *e1,const void *e2)
{
    return strcmp(((struct stu*)e1)->name,((struct stu*)e2)->name);
    //想要对什么数据进行比较 就强制转换为什么类型的指针
}
int main(){
    struct stu a [3]={{"zhangsan",20},{"lisi",10},{"wangwu",15}};
    int leng=sizeof(a)/sizeof(a[0]);
    qsort(a,leng,sizeof(a[0]),Compare_st);
    //第一个参数为需排序数组首元素 第二个参数为需排序数组长度 第三个参数为需排序数组一个元素的大小 第四个参数为想要如何排序的函数(用户自己写的)的指针
    for(int x=0;x<3;x++){
        printf("%s %d ",a[x].name,a[x].age);
    }
    return 0;
}

你可能感兴趣的:(c语言)