回调函数排序异常原因

news/2025/1/16 4:48:17/

回调函数排序异常原因

  • 问题所在
  • 解决方案

参考我的这篇博文c++回调函数排序:回调函数

我之前的代码是这样写的:(存在问题)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

问题所在

将数组传递到其他函数中,再使用sizeof(数组名),得到的不是数组的完成长度了(往往会短一些)

解决方案

需要将数组长度作为参数传递到使用数组的函数里面。
在这里插入图片描述

int compdesc(const void* p1, const void* p2)       // 降序的回调函数。
{//void* 指针转换为int*指针,再解引用return *((int*)p2) - *((int*)p1);
}
int compasc(const void* p1, const void* p2)         // 升序的回调函数。
{return *((int*)p1) - *((int*)p2);
}//测试用例;
//int a[6] = { 1,20,3,30,3,5 };
//MyQshort(a);
//cout << "主函数调用;" << endl;
//for (int i = 0; i < sizeof(a) / sizeof(int); i++) {
//	cout << a[i] << endl;
//}
//注意:再函数里面打印输出就不完全了(sizeof(a)长度的原因)
void MyQshort(int* a,int len) {qsort(a, len, sizeof(int), compasc);}

主函数中的调用:

int main()
{//int a[6] = { 1,20,3,30,3,5 };//MyQshort(a);//cout << "主函数调用;" << endl;//for (int i = 0; i < sizeof(a) / sizeof(int); i++) {//	cout << a[i] << endl;//}//cout << "查找的下标为:" << endl;//cout << search(a, sizeof(a) / sizeof(int), 3)<<endl;int a[6] = { 40, 10, 100, 90, 20, 25 };MyQshort(a,6);std::cout << "主函数调用;" << endl;for (int i = 0; i < sizeof(a) / sizeof(int); i++) {std::cout << a[i] << endl;}return 0;
}

在这里插入图片描述


http://www.ppmy.cn/news/341403.html

相关文章

排水管网监测,万宾排水管网在线监测系统

城市排水管网是保障城市环境卫生的重要基础设施。然而&#xff0c;传统的排水管网管理方式存在许多问题.通过排水管网在线监测系统的建设&#xff0c;可以实现对管网上窨井井盖状态、管网液位、管网流量、管网水质等数据采集&#xff0c;实时掌握排水管网运行状况&#xff0c;为…

剑指 Offer 09: 用两个栈实现队列

简单明了&#xff0c;带你直接看懂题目和例子。 输入&#xff1a; ["CQueue","appendTail","deleteHead","deleteHead"] 这里是要执行的方法&#xff0c;从左到右执行 [[],[3],[],[]]对应上面的方法&#xff0c;是上面方法的参数。CQ…

java版本工程项目管理系统源码-简洁+好用+全面-工程项目管理

​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承包企…

容器(第六篇)docker-harbor

什么是Harbor Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。 Harbor以 Docker 公司开源的 Registry 为基础&#xff0c;提供了图形管理 UI 、基于角色的访问控制(Role Based AccessContr…

Android TV 开发之屏幕适配

转自&#xff1a;https://www.jianshu.com/p/f406740263e7前言Android 的屏幕适配是指适配不同机顶盒 UI 框架层输出的分辨率和 dpi&#xff0c;而不是适配不同分辨率的电视机&#xff08;电视机的适配交由机顶盒本身完成&#xff0c;和各个应用无关&#xff09;。获取机顶盒 U…

c9, Performance Monitor Control Register

http://liuluheng.github.io/wiki/public_html/Embedded-System/Cortex-A8/Performance%20Monitor%20Control%20Register.html 目录 enable the perfromance counter c9, User Enable Register c9, Interrupt Enable Clear Register access the cycle-counter from the us…

【Linux】C9

目录 设置权限umask 设置默认权限 umask永久生效 访问控制列表&#xff08;acl&#xff09; 查看用户acl权限&#xff1a;getfacl 文件路径 设置用户alc权限&#xff1a;setfacl -m u:用户名:权限 文件路径 删除acl权限&#xff08;文件上所有acl权限&#xff09;&…

ps复制图层警告 (不能从选区建立新图层,因为所选区域是空的。)解决方法

有时我们选完选区 按 CtrlJ 复制图层 会出现这种情况 问题出在你当前选的图层 因为 我选择的这块选区在第二个图层上 但很明显 选择的是一大个图层 简单说 你操作的选区必须在你当前选择的图层上才行 也就是 我现在要将选择区换成第二个图层才行 再按 CtrlJ 图层就出来了