**第三个参数:**是数组每个元素的大小,也可以用sizeof(数组的类型)来计算。
**第四个参数:**是函数的排列比较,就是写一个比较函数。这个函数的形式是
int(const void* a,const void* b);
其中void*他是不确定类型的指类型的指针,可以接受任意类型变量的地址,
如int a=10;void* p=&a;char b=‘w’;void* pa=&b;但是对于void类型的指针,因为他不确定类型,所
以对他进行++ --都是错误的操作,比如上述p++、pa++,P–等都是err写法,因为类型不确定导致
程序不知道向前或向后访问几个字节(int向后访问4字节,char向后访问1字节)。
三、qsort函数具体例子:
=================
#include<stdlib.h>
#include<stdio.h>
int int_cmp(const void* a,const void* b) //函数实现*
{
return *(int )a-(int)b;
}//升序
//其中(int),为将void强制转化(int)
//return (int*)b-(int)a;//降序
int main( ) //整形排序
{
int arr[]={1,3,4,5,6,9,7,8,0,2};
int sz=sizeof(arr)/sizeof(arr[0]);
qsort(arr,sz,sizeof(int),int_cmp);
int i=0;
for(i=0;i<sz;i++)
{
printf("%d ",(arr+i));//打印每一个元素(arr+i)等价于arr[i]
}
return 0;
}
排浮点数的例子
#include<stdlib.h>
#include<stdio.h>
int float_cmp(const void* a, const void* b) //函数实现*
{
return(int)((float*)a -(float*)b);
}//升序
//其中(int),为将void强制转化(int)
//return(int) ((float*)b-(float*)a);//降序
int main() //float排序
{
float arr[] = { 1.0, 3.0, 4.0, 5.0, 6.0, 9.0, 7.0, 8.0, 0.0, 2.0 };
int sz = sizeof(arr) / sizeof(arr[0]);
qsort(arr, sz, sizeof(float), float_cmp);
int i = 0;
for (i = 0; i<sz; i++)
{
printf("%f ", (arr + i));//打印每一个元素(arr+i)等价于arr[i]
}
return 0;
}
期待各位大佬批评指正
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618191877)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!