当前位置: 首页 > news >正文

做百度手机网站优化企业网站推广价格

做百度手机网站优化,企业网站推广价格,wordpress 图片变形,淄博网站建设优化珍云大家好,我是苏貝,本篇博客带大家了解qsort函数,如果你觉得我写的不错的话,可以给我一个赞👍吗,感谢❤️ 文章目录 一. qsort函数参数详解1.数组首元素地址base2.数组的元素个数num和元素所占内存空间大小w…

大家好,我是苏貝,本篇博客带大家了解qsort函数,如果你觉得我写的不错的话,可以给我一个赞👍吗,感谢❤️
在这里插入图片描述

文章目录

  • 一. qsort函数参数详解
    • 1.数组首元素地址base
    • 2.数组的元素个数num和元素所占内存空间大小width
    • 3.自定义比较函数cmp
  • 二. cmp函数:
    • 1. 对整型数组排序(char/short/int/long)
    • 2 .对浮点型数组排序(float/double)
    • 3.对字符串长度和大小排序
      • 3.1 对字符串长度排序
      • 3.2 对字符串大小排序
    • 4.对结构体排序

一. qsort函数参数详解


函数原型:void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );
头文件:<stdlib.h>
返回值:无

在这里插入图片描述

1.数组首元素地址base

如果想将一组数据进行排序,那么就要知道该数组首元素地址。base的类型为void* ,代表base可以是任意类型的指针(地址),也就是说数组可以是任意类型的。比如base的类型为int * ,代表该数组的类型为int;base的类型为double * ,代表该数组的类型为double

2.数组的元素个数num和元素所占内存空间大小width

如果想将一组数据进行排序,要知道该数组首元素地址和最后一个元素的地址,但最后一个元素地址不方便作为参数,所以要知道数组的元素个数num和一个元素所占内存空间大小width。size_t是无符号整型

3.自定义比较函数cmp

cmp原型:int cmp(const void *a, const void *b ) ;
a,b的类型为void * 也代表它们可以是任意类型的变量

注意:
1.不管a,b是何种类型的变量,cmp返回值的类型永远是int
2.,* a和 *b前都要加const,确保 *a和 *b的值不会被改变

如果想了解const,请点击该链接


二. cmp函数:

先将a和b强制类型转换为数组的类型,如数组的类型为int,那么将a和b强制类型转换为int* 类型;如数组的类型为double,那么将a和b强制类型转换为double* 类型。再让指针变量pa和pb分别指向a和b指向的内容。用num1和num2分别存储pa和pb指向的内容。返回一个值(注意:对于不同的类型,return后面的表达式也不尽相同)

1. 对整型数组排序(char/short/int/long)

int cmp(const void* a, const void* b)
{int* pa = (int*)a;int* pb = (int*)b;int num1 = *pa;int num2 = *pb;return num1 - num2;//升序//return num2 - num1;//降序
}

可以简写为:

int cmp(const void* a, const void* b)
{return *(int*)a - *(int*)b;//升序//return *(int*)b - *(int*)a;//降序
}

字符在内存中存储的是字符的ASCII码值,ASCII码是整型,所以char的写法同int

int cmp(const void* a, const void* b)
{return *(char*)a - *(char*)b;//升序//return *(char*)b - *(char*)a;//降序
}int main()
{char arr[6] = { '1','3','4','2','8','6'};qsort(arr, 6, sizeof(char), cmp);int i = 0;for (i = 0; i < 6; i++)printf("%c\n", arr[i]);return 0;
}

2 .对浮点型数组排序(float/double)

cmp的返回值类型为int,若数组为double,如果用return (int)(* (char*)a - * (char*)b); ,小数会被丢失造成结果不准确,所以用下面的判断返回值

int cmp(const void* a, const void* b)
{return *(double*)a > *(double*)b ? 1 : -1;//升序//return *(double*)a < *(double*)b ? 1 : -1;//降序
}

3.对字符串长度和大小排序

3.1 对字符串长度排序

int cmp(const void* a, const void* b)
{return strlen((char*)a) - strlen((char*)b);//升序//return strlen((char*)b) - strlen((char*)a);//降序
}int main()
{char arr[3][20] = { "hello world","yes,sir","dian ge zan ba" };qsort(arr[0], 3, sizeof(arr[0]), cmp);int i = 0;for (i = 0; i < 3; i++)printf("%s\n", arr[i]);return 0;
}

在这里插入图片描述

3.2 对字符串大小排序

int cmp(const void* a, const void* b)
{return strcmp((char*)a,(char*)b);
}int main()
{char arr[3][20] = { "hello world","yes,sir","dian ge zan ba" };qsort(arr[0], 3, sizeof(arr[0]), cmp);int i = 0;for (i = 0; i < 3; i++)printf("%s\n", arr[i]);return 0;
}

在这里插入图片描述


4.对结构体排序

对下面结构体数据中的语文成绩进行降序排序

typedef struct a
{char name[20];int Chinese;int Math;int English;
}student;int cmp(const void* a, const void* b)
{student* pa = (student*)a;student* pb = (student*)b;int num1 = pa->Chinese;int num2 = pb->Chinese;//return num1 - num2;//升序return num2 - num1;//降序
}int main()
{student stu[4] = { {"zhang",66,77,88},{"lisi",60,70,80},{"wangwu",73,76,98},{"xuer",88,89,95}};qsort(stu, 4, sizeof(student), cmp);int i = 0;for (i = 0; i < 4; i++){printf("%s\t", stu[i].name);printf("%d\t", stu[i].Chinese);printf("%d\t", stu[i].Math);printf("%d\n", stu[i].English);}return 0;
}

在这里插入图片描述


好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️

http://www.yayakq.cn/news/311872/

相关文章:

  • 西安网站制作资源百度seo查询工具
  • 电商网站制作案例网站装修用什么软件做
  • 一个可以做网站中国建设部网站监理延续
  • flash网站制作教程 下载邯郸景区网站制作
  • 有关做能源的网站网站硬件费用
  • 网站素材大全电子商务主要学什么主要干啥
  • 美工宝盒网站wordpress 发信
  • 杂粮网站建设的必要性湖南长沙防控指挥部最新公告
  • 用博客网站做淘宝客网页设计师主要做什么
  • 网站每年费用服装详情页设计
  • 兰州新区规划建设管理局网站Vs做的网站调试时如何适应网页
  • 自适应网站建设专家惠州网站建设方案托管
  • 简单网站 快速建设wordpress1.29下载
  • 设计师线上接单的app芜湖网站优化公司
  • 宿州网站建设优化wordpress4.9上传失败
  • 普通网站建设的缺陷自己怎么做网站免费的
  • kkday是哪里做的网站中国建设银行信用卡电话
  • 手机网站设计公新沂网站优化
  • 网站免费认证华强北设计网站建设
  • 2021国内最好用免费建站系统青岛高端网站制作
  • 网站开发建立做网做网站建设
  • 中国建设住建网站域名可以做网站吗
  • minisite网站案例成都网站制作公司 dedecms
  • html5手机网站模板 下载怎么做批量的网站检查
  • 哈尔滨做设计和网站的公司app开发公司排名
  • 网站建设制作费 税前扣除吗dz网站收款即时到账怎么做的
  • 进一步加大网站集约化建设力度h5页面怎么制作app有哪些
  • 网站开发教程大全网站信息化建设建议和意见
  • 厦门手机网站建设linux服务器怎么做网站
  • 济南网站建设代码制作一个网站的基本步骤