自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 第十二章:Timer_输入捕获模块 —— 给你的开发板装上“电子秒表”

摘要:本文详细讲解STM32输入捕获功能,将其比作"电子秒表"来测量外部信号参数。主要内容包括:1)输入捕获原理(通过边沿跳变记录定时器计数值);2)XL555信号源芯片特性;3)CubeMX配置13个关键步骤;4)频率/周期/脉宽计算公式及计算示例;5)HAL库代码实现(DMA和中断两种方式)。文章特别针对蓝桥杯竞赛需求,提供实用配置建议和常见问题解决方案,帮助开发者快速掌握这一重要外设功能。

2025-12-12 13:50:00 910

原创 第十一章:Timer & PWM 模块 —— 给你的开发板装上“节奏大师”!

本文详解STM32的PWM与定时器模块,通过生动比喻帮助初学者快速掌握核心概念。内容涵盖:1)PWM原理与生活应用;2)硬件/软件PWM实现对比;3)STM32五类定时器功能解析;4)CubeMX配置13项关键参数;5)频率/占空比计算公式与设置步骤;6)HAL库API使用方法;7)与8051定时器的对比。重点强调硬件PWM的高效稳定特性,提供配置口诀和避坑指南,适合电机控制、LED调光等场景开发。通过系统讲解,使开发者能精准控制外设"节奏",实现从呼吸灯到无刷电机的多样化应用。

2025-12-12 13:33:27 782

原创 第十章:RTC 模块 —— 给你的开发板装上“生物钟”!

📝 RTC模块开发指南摘要 RTC(实时时钟)是嵌入式系统的"生物钟",断电后仍可通过纽扣电池持续计时。本文详解STM32 RTC开发要点: 1️⃣ 硬件配置关键 推荐LSE(32.768kHz晶振)+VBAT供电 注意时间/日期读取顺序:先GetTime再GetDate 2️⃣ CubeMX核心配置 时钟源选择(LSE最佳) 预分频器设置(自动生成1Hz信号) 双闹钟+唤醒定时器配置 备份域确保数据掉电不丢失 3️⃣ 典型应用场景 电子钟/数据记录仪 低功耗定时唤醒 安全设备防篡改检

2025-12-12 13:21:44 1104

原创 第九章: I²C 模块 —— 给你的芯片装上“微信”!

【摘要】 本文系统讲解I²C通信协议及其应用,通过"微信群聊"类比阐释I²C工作原理:两根总线(SDA/SCL)实现多设备通信,MCU作为"群主"通过地址寻址管理设备。重点解析MCP4017数字电位器的控制方法,提供完整的STM32CubeMX配置指南(引脚设置、时钟配置)和底层驱动代码(含EEPROM读写修复)。内容涵盖硬件设计要点(上拉电阻必须)、地址计算(0x5E/0x5F)、数据范围限制(0x7F)等实战细节,并对比I²C与SPI的适用场景。

2025-12-11 20:20:07 1054

原创 第八章: 滤波模块 —— 给你的数据“洗个澡”!

本文介绍了数据滤波的核心概念与四种常用算法。首先通过电话降噪的比喻形象说明滤波的作用是去除噪声保留有效信息。然后分析了传感器数据常见的噪声来源(环境干扰、硬件误差等),指出滤波能让数据更稳定可靠。重点讲解了四种滤波方法:限幅滤波(设数据范围边界)、中值滤波(取中间值抗脉冲干扰)、算术平均滤波(平滑小波动)和一阶滞后滤波(低通跟踪慢变信号)。每种方法都附有代码示例、适用场景和优缺点分析,并通过图表对比了滤波效果。最后强调应根据具体场景选择合适算法,并提供了完整的头文件实现。全文用生活化比喻使复杂概念易于理解,

2025-12-11 20:08:29 709

原创 第七章:ADC 模块 —— 给你的开发板一双“慧眼”!

📝【STM32 ADC模块高效采集指南】 本文详细讲解STM32 ADC模块的配置与使用技巧: 1️⃣ 硬件连接:强调模拟输入引脚的去耦电容与接地设计,确保信号质量 2️⃣ CubeMX配置: 推荐12-bit右对齐+扫描模式(多通道) 详解DMA循环模式配置(内存地址递增) 3️⃣ DMA机制:比喻为"自动搬运工",实现ADC数据到内存的无CPU干预传输 4️⃣ 代码实现: 提供DMA双通道缓冲区定义 包含数据归一化处理(/4096)和电压转换公式 5️⃣ 关键口诀:总结分辨率选择、

2025-12-10 20:29:08 1701

原创 第六章:UART 模块 —— 让你的开发板“会说话”!

本文详细讲解STM32的UART串口通信实现,涵盖硬件连接、CubeMX配置及两种接收方案:1)中断+超时解析,适合简单命令;2)DMA+空闲中断+环形缓冲区,适合大数据传输。重点通过厨房比喻解释DMA原理,用贪吃蛇类比环形缓冲区。文章提供完整代码实现,包括环形缓冲区管理、DMA初始化和中断处理,并对比两种方案的优缺点。最后总结UART配置口诀,帮助开发者快速掌握串口通信核心要点,根据项目需求选择合适方案。

2025-12-10 20:15:30 1139

原创 第五章:LCD 模块 —— 让你的开发板“看得见”世界!

蓝桥杯嵌入式lcd

2025-12-08 20:52:09 1109

原创 第四章:Key 模块 —— 让你的开发板“听得懂”你按了什么!

摘要:本文介绍两种STM32按键检测方案,适用于STM32G431RBT6开发板。方案一为简洁版,通过位运算识别按键按下/松开瞬间,适合简单应用;方案二采用状态机实现,具备去抖、长按、连按检测功能,适合复杂场景。文章详细讲解了硬件连接原理(上拉电阻+按键接地)、HAL库GPIO读取API,并提供完整代码示例。两种方案均以生活场景比喻(电梯按钮/手机闹钟),帮助初学者理解嵌入式按键处理的核心思想:周期性扫描(5-10ms)和状态管理。文末总结两套方案的适用场景,让开发者能根据项目需求选择合适方案。

2025-12-08 20:40:48 1240

原创 第三章:LED 模块 —— 为你的开发板点亮“表情”!

摘要:本文详细讲解了基于STM32G431RBT6开发板的LED模块控制方法,重点介绍了共阳极LED的连接方式(PC8-PC15)和控制原理。核心内容包括:1)LED状态数组ucLed[8]的定义与使用;2)关键函数led_disp()的工作原理,包括数据拼装、取反处理和同步更新机制;3)常见问题解答,如位操作原理和共阳极电路特性;4)实际应用示例和调试技巧。文中特别强调了对GPIO高低8位的保护操作,并提供了简单易懂的"舞台换景"类比来帮助理解LED刷新过程,最后给出了一个LED跑马灯

2025-12-07 21:47:05 797

原创 工程框架搭建(续)

本文介绍了STM32嵌入式系统开发的两个核心模块:系统初始化和任务调度器实现。系统初始化部分指出了常见错误操作(如直接写ODR寄存器)并给出了正确方法,强调时钟使能、GPIO配置和初始状态的正确设置流程。任务调度器部分通过结构体封装任务信息,利用HAL_GetTick()实现基于时间差的任务触发机制,解决了多任务调度问题。文章采用通俗比喻(如"智能管家")解释技术概念,提供了可直接使用的代码模板,并总结了"初始化三步走"等实用口诀,帮助开发者快速掌握嵌入式系统的基本架

2025-12-07 21:34:55 879

原创 二、工程框架搭建 —— 打好嵌入式开发的地基!

零基础小白打蓝桥杯嵌入式第二课!

2025-12-07 20:43:22 701

原创 序:代码命名规则 —— 让你的代码“会说话”

蓝桥杯嵌入式零基础小白到国赛高手第一课!

2025-12-07 20:21:33 900

原创 第9讲:函数递归——用“套娃”思维解决复杂问题

本文介绍了递归编程的核心概念与应用。递归是通过函数调用自身将复杂问题拆解为更小规模的子问题,需要满足终止条件和趋近条件两大铁律以避免无限递归。文章通过阶乘计算和数字逐位打印两个案例展示了递归的实现逻辑,并对比了递归与迭代在效率上的差异,指出递归适合树形结构等天然递归问题,但需警惕栈溢出风险。最后提出斐波那契数列的递归陷阱和经典递归问题挑战,帮助读者深入理解递归的适用场景与局限性。

2025-12-06 21:20:37 631

原创 C++ 模板初阶 —— 编写“万能代码”的魔法模具

📝 C++模板初阶摘要 模板是C++泛型编程的核心工具,通过类型参数化实现代码复用。 🔹 函数模板 使用template<typename T>定义通用函数 编译器根据调用类型自动实例化(隐式/显式) 与普通函数共存时优先匹配普通函数 🔹 类模板 整个类可参数化(如Stack<T>) 需将声明和定义都放在头文件中 💡 优势 消除重复代码 提高可维护性 支持任意兼容类型 ⚠️ 注意 类模板不能分离编译 类型推导需一致 模板为STL等高级特性奠定基础,是掌握现代C++的关键。

2025-12-06 21:16:54 1602

原创 CC++ 内存管理 —— 程序的“五脏六腑”在哪里?

📝 C/C++内存管理核心摘要 1️⃣ 内存五大分区: 栈:自动管理,存局部变量 堆:手动管理,malloc/new申请 数据段:存全局/静态变量 代码段:存函数代码和字符串常量 内存映射段:高级用途 2️⃣ C语言动态内存: malloc/calloc分配,free释放 realloc调整大小(注意地址可能改变) 3️⃣ C++内存管理: new:分配内存+调用构造函数 delete:调用析构函数+释放内存 数组用new[]和delete[]

2025-12-05 19:50:38 775

原创 C++ 类和对象(下)——进阶玩法大揭秘!

C++ 类和对象进阶摘要 本文深入探讨了C++类和对象的进阶特性: 初始化列表:比构造函数体内赋值更高效,特别是对于自定义类型成员。强制使用场景包括引用成员、const成员和无默认构造的类成员。 类型转换:通过单参数构造函数实现隐式类型转换,可用explicit关键字禁止。支持类间转换。 static成员:属于整个类而非单个对象,用于实现类级别的共享数据。静态成员函数无this指针,只能访问静态成员。 其他特性:包括友元(打破封装)、内部类(嵌套类)、匿名对象和编译器优化技术。

2025-12-05 19:46:02 939

原创 C++ 类和对象(中)—— 默认成员函数全解析!

C++ 类和对象(中)核心知识点摘要 🔍 核心内容: 默认成员函数:编译器自动生成的6个特殊函数(构造/析构/拷贝构造/赋值重载/取地址重载) 构造函数:初始化对象成员,可重载,不写时生成无参默认构造 析构函数:对象销毁时自动调用,负责资源清理,栈式销毁顺序(后进先出) 拷贝构造:用已有对象初始化新对象,浅拷贝危险,深拷贝必要 关键原则:写了析构就必须写拷贝构造;自定义类型成员会自动调用其构造/析构 💡

2025-12-04 19:54:52 939

原创 类和对象(中)

本文介绍了C++面向对象编程中最重要的默认成员函数机制,包括构造函数、析构函数和拷贝构造函数。主要内容有: 构造函数是对象创建时自动调用的初始化函数,具有与类名相同的名称且无返回值。它可重载,分为无参、带参和全缺省三种形式。 析构函数在对象销毁前自动调用,用于释放资源,名称格式为~类名。它没有参数和返回值,且不可重载。 拷贝构造函数用于通过已有对象初始化新对象,函数签名为类名(const 类名&)。编译器会自动生成浅拷贝版本,但需要资源管理时应手动实现深拷贝。

2025-12-04 19:53:32 708

原创 类和对象(上)

C++类和对象基础摘要 本文介绍了C++中类和对象的基本概念及使用方式: 类与对象:类(class)是抽象设计图,对象(object)是具体实例。例如"日期类"和"2024年3月31日"这个具体日期。 类定义语法: 使用class关键字定义 包含成员变量(属性)和成员函数(方法) 类定义结束必须加分号 访问控制: public:公开访问 private:仅类内访问(默认) protected:类内及子类访问

2025-12-02 20:39:27 743

原创 C++ 发展简史与核心语法入门

C++ 发展简史与核心语法入门 本文介绍了C++的发展历程和基础语法要点: 起源与发展:C++由Bjarne Stroustrup于1979年创建,目的是解决C语言缺乏抽象能力的问题。1998年发布第一个国际标准C++98,后续经历了C++11等重大更新。 基础语法: 第一个C++程序示例及编译方式 命名空间(namespace)的概念和使用方法,解决命名冲突问题 C++特有的输入输出流(cin/cout)及其效率优化技巧 缺省参数(default arguments)的语法规则和使用场景

2025-12-02 20:31:17 2709

原创 二叉树性质与经典算法题 —— 从理论到实战

本文系统讲解二叉树的核心性质与经典算法题,涵盖理论证明、选择题解析和LeetCode实战代码。主要内容包括:1)二叉树性质如叶子结点公式n0=n2+1及其证明;2)选择题精讲,涉及完全二叉树结点计算与遍历序列推导;3)LeetCode高频算法题实现,包括单值二叉树判断、对称二叉树检测、子树匹配等,提供可直接运行的C代码与详细注释。通过边数法、生长模型等多种证明角度,结合层次遍历、前中后序序列转换等典型问题,帮助读者从理论到实战全面掌握二叉树核心考点。

2025-11-29 19:57:06 971

原创 链式二叉树 —— 用指针构建的树形世界

本文介绍了链式二叉树的C语言实现,包含基础概念、核心操作和完整代码示例。主要内容包括: 链式二叉树的结点结构设计(数据域+左右指针) 手动创建二叉树的示例方法 三种递归遍历实现(前序、中序、后序) 常用递归操作:结点统计、查找、销毁等 层序遍历的队列实现方法 文章采用图文结合的方式,适合初学者理解二叉树的基本概念和操作,提供了可直接运行的代码模板,涵盖从创建到销毁的全流程实现。通过递归思想的讲解和实际应用示例,帮助读者掌握二叉树的核心算法。

2025-11-29 19:54:10 1237 1

原创 二叉树与堆 —— 小白友好 + 完整代码版

本文系统介绍了二叉树与堆的核心概念及实现。首先通过家族族谱类比解释树结构的层级特性,然后详细讲解二叉树的两种特殊形式(满二叉树和完全二叉树)。重点介绍了堆这种高效数据结构,包括其定义、特性(大堆/小堆)和基本操作(插入、删除)。文章提供了完整的C语言实现代码,包含头文件定义、堆操作函数(如向上/向下调整)以及测试用例。最后简要提及堆排序的应用场景。内容通俗易懂,适合零基础学习,通过代码示例帮助读者掌握核心算法思想。

2025-11-28 19:14:35 695

原创 栈和队列算法题:

本文介绍了栈和队列的经典算法题型,包括有效的括号判断、用队列实现栈和用栈实现队列。通过生活化的比喻,如"配对情侣入场"和"快递分拣台",生动解释了数据结构的工作原理。文章提供了完整的C语言实现代码,并分析了时间复杂度。核心思想是利用栈的"后进先出"特性处理匹配问题,以及通过双栈/双队列的互相倒腾模拟对方的数据结构。这些基础算法题是理解数据结构变形术的关键。

2025-11-28 19:08:35 694

原创 栈和队列: 一个“后进先出”的储物柜,一个“先来先得”的排队窗口

栈和队列是两种基础线性数据结构,栈遵循后进先出(LIFO)原则,只允许在栈顶操作,适合用数组实现;队列遵循先进先出(FIFO)原则,需要在两端操作,适合用链表实现。栈的数组实现能获得O(1)时间复杂度的尾部操作,而队列的链表实现可以高效完成头删尾插操作。文章通过生活比喻和C语言代码示例,清晰展示了两种数据结构的特性和实现方式,并强调底层结构选择取决于操作位置而非绝对优劣。

2025-11-27 19:21:56 1137

原创 快慢指针破解链表环之谜

slow⼀次⾛⼀步,fast⼀次⾛2步,fast先进环,假设slow也⾛完⼊环前的距离,准备进环,此时fast 和slow之间的距离为N,接下来的追逐过程中,每追击⼀次,他们之间的距离缩⼩1步。按照上⾯的分析,慢指针每次⾛⼀步,快指针每次⾛三步,此时快慢指针的最⼤距离为N,接下来的 追逐过程中,每追击⼀次,他们之间的距离缩⼩2步。N是奇数,C是偶数。快慢指针,即慢指针⼀次⾛⼀步,快指针⼀次⾛两步,两个指针从链表起始位置开始运⾏,第⼀轮追不上,快追上,错过了,距离变成-1,即C-1,进⼊新的⼀轮追击。

2025-11-27 19:09:01 1296

原创 单向不带头链表 vs 双向带头循环链表:

链表参数传递方式对比 单向不带头链表和双向带头循环链表在参数传递方式上的差异源于它们的结构特性: 单向不带头链表: 头指针直接指向第一个数据节点 插入/删除操作可能改变头指针本身 需要传递指针的地址(二级指针)来修改外部头指针 双向带头循环链表: 头指针永远指向固定哨兵节点 所有操作只修改节点间的连接关系 只需传递指针值即可,无需修改头指针本身 关键区别:是否需要修改外部头指针的值决定了参数传递方式。单向链表因头指针可能改变而需要传址,双向循环链表因有固定哨兵节点只需传值。

2025-11-26 20:46:14 489

原创 单链表经典算法题

本文精选了5道单链表经典算法题,包括移除链表元素、反转链表、合并有序链表、寻找中间节点和判断回文结构。针对每道题目,作者提供了原始解法和优化解法,重点分析了改进思路。优化方案主要采用虚拟头节点、原地修改和三指针等技巧,提升了代码简洁性和执行效率。其中移除元素题通过虚拟头节点简化边界处理,反转链表题优化指针操作逻辑,合并链表题避免不必要的内存分配。对于回文判断,文章对比了数组辅助法和快慢指针反转法的优劣。这些优化方案均达到O(n)时间复杂度和O(1)空间复杂度,是面试和工程实践中的推荐写法。

2025-11-26 20:41:52 599

原创 第3讲:单链表与双向链表 —— “灵活车厢”的数据结构

本文介绍了链表数据结构的基本概念和实现方式。首先通过火车车厢的比喻形象说明链表的物理离散、逻辑连续特性。重点讲解了单链表(无头单向非循环)的实现细节,包括节点结构、动态创建、打印以及完整的增删查改操作,特别强调了二级指针在头指针修改中的必要性。同时对比了不同链表类型的优缺点,指出无头单向非循环链表适合简单场景,而带头双向循环链表因功能强大更适用于实际应用。文章还提供了链表操作的时间复杂度分析和最佳实践建议。

2025-11-25 19:11:01 861

原创 第2讲:顺序表与链表 —— 线性结构的“双子星”

本文介绍了线性结构的两种基础实现——顺序表和链表。顺序表基于数组实现,通过封装数组并添加动态扩容机制,解决了原生数组的固定大小问题。文章详细讲解了顺序表的实现原理,包括初始化、自动扩容、增删改查等核心操作,并分析了不同操作的时间复杂度(尾部操作O(1),头/中部操作O(N))。最后提到将通过经典算法题来实践顺序表的应用。文章采用生动的比喻(毛坯房vs精装房)帮助理解顺序表对数组的改进,为后续学习链表打下基础。

2025-11-25 19:06:18 646

原创 第1讲:算法复杂度 —— 衡量代码的“效率标尺”

本文系统讲解了算法复杂度的核心概念与应用。首先介绍了数据结构和算法的基本定义,强调复杂度分析作为评估算法优劣的标尺。重点剖析了时间复杂度和空间复杂度的计算方法,通过旋转数组等案例展示了不同算法的性能差异。详细讲解了大O渐进表示法的推导规则,并提供了多个典型实例(如双重循环、递归、二分查找等)的复杂度分析。最后对比了常见复杂度等级,指出从O(1)到O(2^N)的性能差异,指导开发者优先选择高效算法。全文强调复杂度分析在设计阶段预判代码性能的重要性,是程序员优化代码的核心竞争力。

2025-11-24 19:20:48 1061

原创 CC++ 预处理详解 —— 编译前的“魔法工厂”

C/C++预处理阶段是编译前的关键步骤,负责宏替换、头文件包含、条件编译等操作。本文详细解析了预处理的各类指令和技巧,包括:1)预定义符号如__FILE__、__LINE__的使用;2)#define定义常量和带参宏的注意事项;3)宏与函数的性能对比;4)高级运算符#和##的字符串化和记号粘合功能;5)条件编译的调试应用;6)头文件包含的两种方式等。通过丰富的示例(如调试日志、类型无关宏等),展示了预处理在代码优化、调试和跨平台开发中的强大作用,同时强调了命名规范和潜在陷阱(如副作用参数)

2025-11-24 19:16:26 622

原创 第24讲:编译和链接

本文揭秘了C程序从源代码到可执行文件的完整转换过程。主要分为翻译环境(预处理、编译、汇编、链接四步)和运行环境两大阶段。预处理阶段处理宏定义、头文件包含等;编译阶段进行词法、语法和语义分析;汇编阶段生成机器码;链接阶段解决跨文件调用问题。运行环境则负责程序执行时的内存管理和函数调用。理解编译链接过程有助于开发者排查代码问题,掌握程序运行的底层原理。

2025-10-19 21:22:00 487

原创 第23讲:文件操作

文件操作是C语言实现数据持久化的核心技术。本讲介绍了文件的基本概念(程序文件与数据文件)、存储形式(文本文件与二进制文件)以及文件指针的使用方法。重点讲解了文件的打开/关闭、顺序读写(fgetc/fputc等)和随机读写(fseek/ftell)操作,并纠正了常见的feof使用误区。通过文件操作,程序可以实现数据的长久保存,避免内存数据的"瞬时性"问题。掌握文件缓冲区原理和正确的文件结束判断方法,是高效使用文件的关键。

2025-10-19 21:20:38 280

原创 第22讲:动态内存管理

📚 动态内存管理精要 🌟 核心概念: 动态内存管理解决栈空间固定大小的限制,允许程序运行时按需分配堆内存 主要函数:malloc/free黄金搭档、calloc(带初始化)、realloc(动态扩容) ⚠️ 关键陷阱: 必须检查malloc返回值是否为NULL free后立即置指针为NULL防野指针 禁止重复释放、部分释放或释放非动态内存 使用realloc时要先检查临时指针 💡 高级技巧: 柔性数组实现结构体的动态扩展 二级指针解决函数内部分配内存问题

2025-10-18 20:17:27 853

原创 第21讲:自定义类型:联合和枚举

📝 C语言联合与枚举解析 联合体(union)和枚举(enum)是C语言中两种高效的数据组织方式。联合体通过共享内存机制实现空间优化,所有成员共用同一块内存,大小由最大成员决定(需考虑内存对齐),典型应用包括判断系统大小端和优化数据结构。枚举则提供类型安全的常量集合,通过具名值提升代码可读性,比#define更规范且便于调试。 联合体适合需要内存复用的场景,而枚举适用于有限选项的情况,两者都能显著提升代码质量。使用时需注意C语言中枚举的类型检查较宽松,而C++更严格。

2025-10-18 20:10:27 1067

原创 第20讲:自定义类型:结构体

本文摘要: C语言结构体专题讲解,以生动比喻解析结构体概念与应用。内容涵盖:结构体声明(房屋蓝图)、变量创建与初始化(盖房入住)、成员访问操作符(开门进屋)、内存对齐原理(超市货架摆放规则)、传参优化策略(搬家vs寄钥匙),以及位段技术(身份证号码压缩存储)。重点剖析结构体内存对齐机制,通过实例演示如何计算结构体大小,并对比不同传参方式的效率差异。最后探讨位段技术的空间优化原理及其跨平台兼容性问题,为开发者提供高效内存管理方案。全文采用生活化类比,将抽象概念形象化,适合C语言学习者深入理解结构体核心知识。

2025-10-17 16:58:16 601

原创 第19讲:数据在内存中的存储

数据在内存中的存储解析 本文深入探讨了不同类型数据在计算机内存中的存储方式,重点讲解了整数、大小端字节序和浮点数的存储机制。 整数存储:采用二进制补码形式,解释了原码、反码和补码的转换规则,揭示了CPU用加法器实现减法的原理。 大小端模式:通过快递包裹的比喻形象说明字节序概念,提供代码判断当前系统的字节序方式,并分析多个综合练习中的内存操作问题。 浮点数存储:介绍IEEE 754标准的科学计数法编码方式,包括符号位、有效数字和指数偏移量的处理,最后通过类型转换示例展示整型和浮点型的不同内存表示。

2025-10-17 16:49:02 769

原创 第18讲:C语言内存函数

本文介绍了C语言中常用的内存操作函数:memcpy(内存拷贝,不处理重叠)、memmove(安全处理重叠内存拷贝)、memset(内存填充)和memcmp(内存比较)。这些函数以字节为单位直接操作内存,适用于任意数据类型。文章详细讲解了各函数的使用方法、特性说明,并通过示例代码展示了实际应用场景。特别强调了memmove处理内存重叠的实现原理,即通过判断地址关系选择正向或反向拷贝。这些底层内存操作函数是C语言高效编程的重要工具。

2025-10-16 18:05:10 504

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除