(数组首元素地址,数组元素个数,数组中每个元素的大小,函数指针-比较两个元素所用函数的地址)
#include<stdio.h>标签:方式,示例,int,void,qsort,pb,arr3,sizeof From: https://blog.51cto.com/u_13606048/6115637
#include<stdlib.h>
#include<string.h>
//结构体
struct stu{
char name[20];
int age;
};
//整型比较方式
int cmp_int(const void* pa, const void* pb) {
return (*(int*)pa - *(int*)pb);
}
//浮点型比较方式
int cmp_float(const void* pa, const void* pb) {
return (*(float*)pa - *(float*)pb);
}
//结构体比较方式--年龄
int cmp_con(const void* pa, const void* pb) {
return (((struct stu*)pa)->age - ((struct stu*)pb)->age);
}
//结构体比较方式--名称
int cmp_coname(const void* pa, const void* pb) {
return (strcmp(((struct stu*)pa)->name , ((struct stu*)pb)->name));
}
//整型打印
void print1(int arr[],int sz) {
int i = 0;
for (i = 0; i < sz; i++) {
printf("%d ", *(arr + i));
}
printf("\n");
}
//浮点型打印
void print2(float arr[], int sz) {
int i = 0;
for (i = 0; i < sz; i++) {
printf("%f ", arr[i]);
}
printf("\n");
}
//结构体打印
void print3(struct stu *arr,int sz) {
int i = 0;
for (i = 0; i < sz; i++) {
printf("%s ", (arr+i)->name);
}
printf("\n");
}
int main() {
int i = 0;
//整型
int arr1[] = { 9,8,7,6,4,5,1,2,3 };
int sz1 = sizeof(arr1) / sizeof(arr1[0]);
//浮点型
float arr2[] = { 9.0,8.0,7.0,6.0,5.0 };
int sz2 = sizeof(arr2) / sizeof(arr2[0]);
//结构体
struct stu arr3[] = { {"liming",20},{"lishui",25},{"zhangneng",15} };
int sz3 = sizeof(arr3) / sizeof(arr3[0]);
//整型qsort的使用
qsort(arr1, sz1, sizeof(arr1[0]), cmp_int);
print1(arr1,sz1);
//浮点型qsort的使用
qsort(arr2, sz2, sizeof(arr2[0]), cmp_float);
print2(arr2, sz2);
//结构体qsort的使用
qsort(arr3, sz3, sizeof(arr3[0]), cmp_con);//年龄的比较
print3(arr3, sz3);
qsort(arr3, sz3, sizeof(arr3[0]), cmp_coname);//名字的比较
print3(arr3, sz3);
return 0;
}