深入解析qsort与冒泡排序
目录一qsort函数二模仿qsort函数利用冒泡排序排序任意类型的数据三sizeof和strlen对比四指针例题1指针-整数2指针-指针3指针复杂计算案例一qsort函数qsort函数作为库函数可以直接用来排序任意类型的数组只需要向里面传递合理的参数即可。语法void qsort(void* basesize_t numsize_t sizeint (*compar)(const void*const void*))分析1base是一个指针指向待排序的数组中的第一个元素2num是数组指向待排序的数组的元素个数3size是一个数组元素的大小4*compar)(const void*const void*)是一个函数指针这个函数指针用来进行补充数组元素排序的规则tmp_t函数的返回值有三种当p1p2时返回正数当p1p2时返回负数当p1p2时返回0p1和p2分别为数组的第一个元素和第二个元素的地址写成p1减p2是升序写成p2减p1是降序strcmp()函数:用来比较字符串的大小p1大于p2返回正数p1小于p2返回负数p1等于p2返回0头文件为include string.h二模仿qsort函数利用冒泡排序排序任意类型的数据分析bubble_sort函数模仿qsort函数设置四个相同的形参。冒泡排序的比较为了保持能通用任意数据利用基地址base转化为char*类型的指针进行地址加减时让步进单位变成一个字节。可以满足不同大小的数据类型的输入。交换同理为了满足任意类型数据的交换设置一个函数这个函数同样以一个字节为单位利用循环一次交换一个字节和数据的大小width实现不同类型元素的交换。对于不同类型的元素冒泡排序是通用的交换也是通用的。不通用的是不同类型元素的比较方法。三sizeof和strlen对比sizeof:1,sizeof是操作符2sizeof计算操作数在内存中所占大小3sizeof不关注操作数中的具体内容补充sizeof括号中的表达式不进行计算sizeof中的内容是地址就一定为4/8例子原因一个文件test.c需要经过编译链接生成test.exe可执行程序再进行运行。sizeof在编译时就需要进行计算。而表达式则需要在运行时才真正计算此时表达式已经使用了。strlen:1,strlen是库函数需要包含头文件#include string.h2,strlen只能计算字符串的大小即字符串中\0前的元素个数。3关注具体内容如果没有“\0就会越界访问继续寻找\0最后生成一个随机数。运用例子1char arr[] abcdef;printf(%d\n, sizeof(arr));运行结果为7arr单独放在sizeof中表示的是整个数组的大小算上“\0总共7个字符。2*arr和arr[1]分别为a和bstrlen遇到实际值时报错只有是地址时会顺着地址找”\0“,遇到时终止。arr 1表示跳过整个数组后的地址没有”\0“,不知道多久遇到”\0“故生成随机值。arr就表示arr整个数组的地址取最小的就是第一个元素的地址。34四指针例题1指针-整数分析根据结构体成员的内存对齐规则结构体的大小为24个字节同时十六进制的0x1其实就是十进制的1加1的大小跟前面是什么类型的数据密切相关展示1,p1 : 0x10000018(24转化为16进制的值0x1000182,p1: 0x100000(数值)1 0x1000013,p1: 0x1000004(int*的大小0x1000042指针-指针分析主要分析p[4][2]的位置。p是一个数组指针指向含有四个元素的数组。已知pa;则p的首元素的地址即为a的首元素的地址。p[4][2]*(*(p4)2)*(p4)a[3][1]因为p为指向一个有四个整形元素的数组的地址数组指针一次跳过四个元素跳过16个就在a[3][1],此时在跳过2个整数就到了a[3][3],a[3][3]和a[4][2]之间差了4个字节。地址差计算p[4][2] - a[4][2] (p 4)[2] - (a 4)[2] (p 4 * 4 2) - (a 4 * 5 2) (p 18) - (a 22) -4故第二个值为-4由于第一个值是地址所以要将-4从补码转化为原码再转化为16进制的地址。-4的补码就是0xFFFFFFFC3指针复杂计算案例分析一级指针表示首元素的地址例如E N P F二级指针表示地址的地址即首元素地址的地址利用地址加上%s即可打印地址处存放的字符串一级指针的加减跳过一个元素二级指针的加减跳过一个地址的地址三级指针的加减跳过一个二级指针的地址

相关新闻

HarmonyOS应用开发实战:萌宠日记 - 自定义 TabBar 设计与图标渲染

HarmonyOS应用开发实战:萌宠日记 - 自定义 TabBar 设计与图标渲染

HarmonyOS应用开发实战:萌宠日记 - 自定义 TabBar 设计与图标渲染 前言 TabBar 是底部导航栏的 视觉呈现核心,它直接影响用户对应用的第一印象和操作体验。在 萌宠日记 中,我们使用 Builder 装饰器 自定义了 TabBar 的渲染方式,实…

2026/10/3 5:57:40 阅读更多 →
第四篇:《函数、指针与结构体:组织代码的核心工具》

第四篇:《函数、指针与结构体:组织代码的核心工具》

变量是代码的“名词”,函数是代码的“动词”。在 Go 语言中,函数是第一公民,支持多返回值、命名返回值和闭包。指针提供了对内存的间接访问能力,但 Go 的指针比 C 更安全——不支持指针算术。结构体(struct&#xff09…

2026/10/3 10:17:20 阅读更多 →
【超详细】二分查找(折半查找)核心知识点全解析(含多场景代码实现)

【超详细】二分查找(折半查找)核心知识点全解析(含多场景代码实现)

一、前言二分查找(Binary Search)是算法领域最经典、最高效的查找算法之一,其时间复杂度为 O(logn),相比顺序查找的 O(n) 效率提升呈指数级。它是「分治思想」的典型应用,也是面试中高频考察的算法考点。本文将从核心概…

2026/9/26 3:56:31 阅读更多 →

最新新闻

数字多波束形成(DBF)的MATLAB仿真:从阵列流型到波束图

数字多波束形成(DBF)的MATLAB仿真:从阵列流型到波束图

简介:数字多波束形成(DBF)是阵列信号处理中的核心环节,常用于雷达、通信与声呐系统。这份MATLAB仿真代码包面向需要理解多波束方向图合成原理的初学者,通过可配置参数直观展示波束指向与阵列响应的关系。资源共2个文件…

2026/10/3 10:17:04 阅读更多 →
30B大模型手机部署实战:UFS 4.1存储优化与量化方案

30B大模型手机部署实战:UFS 4.1存储优化与量化方案

1. 当30B大模型撞上手机存储:一场注定要打的硬仗把30B参数的大模型塞进手机,这件事在两年前听起来像是天方夜谭。但到了今天,端侧AI已经从“能不能跑”进入到了“怎么跑得动、跑得稳”的阶段。我最近在折腾本地大模型部署的时候,反…

2026/10/3 10:17:04 阅读更多 →
Codex与Claude协同开发:额度优化与账号安全策略

Codex与Claude协同开发:额度优化与账号安全策略

1. 两套工具同时开工,我到底在图什么先把结论摆在前面:我同时用 Codex 和 Claude 做日常开发,不是因为钱多烧得慌,也不是因为对某个工具有信仰。核心原因只有一个——它们的能力边界不一样,而我的任务类型也不一样。把…

2026/10/3 10:17:04 阅读更多 →
Codex与Claude组合使用指南:额度优化与封号风险规避

Codex与Claude组合使用指南:额度优化与封号风险规避

1. 为什么要把 Codex 和 Claude 放在一起用 先说结论:我同时用 Codex 和 Claude 做 AI 编程,不是因为钱多烧得慌,也不是因为喜欢折腾,而是因为这两个工具在真实项目里的能力边界完全不同。单用任何一个,都会在某个环节…

2026/10/3 10:17:04 阅读更多 →
Qt多媒体开发全流程实战:播放、采集、多线程与打包

Qt多媒体开发全流程实战:播放、采集、多线程与打包

做Qt多媒体开发也有几年了,这个模块算是我用得最多、也最容易被新手误会的部分。很多人以为Qt搞多媒体就是拖个控件、调用几个API,实际上真到做播放器、接摄像头、处理采集推流的时候,坑比想象中多得多。这篇文章我按自己实际项目的踩坑路径&…

2026/10/3 10:17:03 阅读更多 →
云端Agent部署实战:AI模组与阵列式服务器配置指南

云端Agent部署实战:AI模组与阵列式服务器配置指南

1. 从"算力焦虑"说起:为什么CPU突然又被推到了台前 过去两年,只要聊到AI,话题几乎绕不开GPU。显存多大、卡多贵、排队多久,成了圈子里默认的寒暄方式。但真正在一线做推理服务部署的人心里都清楚一件事: GP…

2026/10/3 10:16:03 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 9:14:33 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 9:47:50 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/3 9:42:31 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →