天津网站在哪里建设,常州效果图制作,怎么才能在网上卖东西,网站制作公司获取客户qsort函数#xff1a;
qsort是c语言中的库函数#xff0c;这个函数是对数据进行排序#xff08;对任意#xff09;
冒泡排序中排列整数顺序用的函数只适用于整形#xff0c;而qsort函数适用与所有数据
排序算法
冒泡排序
插入
选择
快速
void qsort{ void * base
qsort是c语言中的库函数这个函数是对数据进行排序对任意
冒泡排序中排列整数顺序用的函数只适用于整形而qsort函数适用与所有数据
排序算法
冒泡排序
插入
选择
快速
void qsort{ void * base //base指向的排序数组的第一个元素的指针 size_t num; //base指向数组中元素的个数 size_t size; //base指向数组中一个元素的大小单位是字节。 int (*cmp)(const void*,const void*);
};
排列浮点型数组字符串结构体不同的是两个元素之间的比较方式不同。 两个字符串的比较大小不能使用 ,, , , !, 应该有strcmp。 strcmp函数不是比较字符串的长度而是对应字符所占字节的大小。
//先测试qsort来排序整形
void test1{ int arr[] {1 2 4 6 7 8 9 43 } int szsizeof(arr) / sizeof(arr[0]); qsort (arr , sz , sizeof(arr[0]) , cmp_int); print_arr();
}
对函数返回值有要求比较两个p1p2的整型
int cmp_int(const void*p1,const void *p2){
return *(int*)p1 - *(int*)p2; //直接比较两个整数的大小了
}
比较两个结构体
张三 李四
20 35
185 170 是比较年龄还是身高呢
qsort给了一个函数指针来比较结构体。
//用test2来排序结构体数据
Struct Stu{
char name[20]; //名字是字符串
int age; //字符串比较用strcmp函数
}
//按照名字来比较
p1强制类型转换才可以用。需要包含头文件#includestring.h
void test2(){ struct Stu arr[]{{zhangsan ,20},{lisi,35},{wangwu,18}; int szsizeof(arr)/sizeof(arr[0]); qsort(arr , sz , sizeof(arr[0]) , com_stu_by_name);
}
int cmp_stu_by_name(const void *p1,const void *p2){ return strcmp(((struct stu*)p1-name,((struct stu*)p2)-name);
}
//按照年龄进行访问
void test3(){ struct Stu arr[]{{zhangsan ,20},{lisi,35},{wangwu,18}; int szsizeof(arr)/sizeof(arr[0]); qsort(arr , sz , sizeof(arr[0]) , com_stu_by_age);
}
int cmp_stu_by_age(const void *p1,const void *p2){ return strcmp(((struct stu*)p1-age,((struct stu*)p2)-age);
}
结构体成员访问变量
struct Stu{
char name[20];
int age;
}
int main(){
struct Stu s{zhangsan,20};
printf(%s %d\n,s.name,s.age);
struct Stu *ss; // 结构体成员访问操作符
printf(%s %d\n,(*ps).name,(*ps).age); // . 结构体变量 . 成员名
pritnf(%s %d\n,ps-name,ps-age); //- 结构体指针-成员名
return 0;
}