- 博客(57)
- 收藏
- 关注
原创 DAYS 57【Linux 驱动深度】I2C 子系统驱动开发全指南:从架构、核心数据结构到设备驱动实战
Linux I2C 子系统是 Linux 总线驱动的经典范本,分层架构清晰地分离了硬件控制器与外设协议。作为驱动开发者,理解i2c_clienti2c_driver三者的关系,掌握i2c_msg的传输模型,就能快速开发各类 I2C 设备驱动。
2026-10-14 20:14:06
186
原创 DAYS 56【Linux 驱动深度】SPI 子系统驱动开发全指南:从架构、核心数据结构到设备驱动实战
在嵌入式 Linux 驱动开发中,SPI 是最常用的外设总线之一,SPI Flash、OLED、ADC、触摸屏、以太网 PHY 等大量外设都通过 SPI 接口与主控通信。Linux 内核为了统一管理 SPI 设备,抽象出了一套完整的 SPI 子系统框架。很多初学者写 SPI 驱动,只会照搬例程调用spi_writespi_read,却不理解内核 SPI 子系统的分层架构、核心数据结构之间的关系,遇到问题很难排查。
2026-10-14 20:10:37
179
原创 DAYS 55【嵌入式通信协议】SPI 协议深度拆解:从 CPOL/CPHA 时序本质,到寄存器读写实战全流程
在嵌入式常用外设通信协议中,SPI 凭借全双工传输、速率高、协议简单的优势,广泛应用于 SPI Flash、OLED 屏幕、加速度传感器、ADC 芯片等场景。但很多初学者接触 SPI 时,总会被 CPOL、CPHA 的四种模式绕晕,也始终搞不懂为什么读操作一定要发 “哑元(Dummy)”。本文结合完整时序波形图,从最底层的时钟极性、相位原理讲起,再到寄存器写操作、读操作的完整流程拆解,把 SPI 的核心逻辑彻底讲透。表格SPI 模式CPOLCPHA空闲时钟电平数据采样边沿实际使用频率模式 0。
2026-10-14 20:00:58
256
原创 DAYS 53【i.MX6ULL 裸机开发】RGB LCD 显示原理全拆解:从像素格式、硬件架构到行场时序与配置流程
做嵌入式开发,LCD 显示是绕不开的核心技能。很多同学调 LCD 时总遇到点不亮、花屏、画面偏移、撕裂的问题,本质是没吃透 RGB LCD 的底层原理,只会照搬设备树参数。今天结合硬件架构图 + 时序图,从像素格式、eLCDIF 控制器、行场同步时序,再到完整的配置流程,把 i.MX6ULL 驱动 RGB LCD 的知识点彻底讲透。显存存像素数据,eLCDIF 控制器按时序把数据发出去,屏幕照着刷新。吃透底层原理再去调驱动,就不会只会照搬例程参数,遇到问题也能快速定位根因。
2026-10-14 19:55:50
436
原创 DAYS 52【i.MX6ULL 裸机开发】I2C 通信全拆解:从开漏硬件特性到主机写流程实战
在嵌入式开发里,I2C 是绕不开的外设:EEPROM、OLED 屏幕、温湿度传感器、触摸屏基本都靠 I2C 驱动。很多同学学 I2C 只背时序图,却没搞懂「为什么 I2C 必须开漏 + 上拉」「线与特性到底有什么用」。今天结合硬件原理图 + 标准时序图 + 寄存器操作流程图,从物理层到协议层再到代码实现,把 I2C 主机写流程彻底讲透,最后附上 i.MX6ULL 裸机驱动代码。上拉电阻不能省:开漏模式本身不能输出高电平,没有上拉电阻总线永远是低电平,通信完全无法进行。从机地址要左移。
2026-10-14 19:48:57
148
原创 Days 51 【嵌入式开发】IMX6ULL UART串口通信超详细解析
串口通信是嵌入式开发中最基础、最常用的通信方式,无论是设备日志打印、模块数据交互(蓝牙、GPS、WiFi),还是下位机与上位机通信,都离不开UART串口。本文基于IMX6ULL MINI开发板,从零梳理UART串口通信核心概念、硬件原理图、电源设计、底层寄存器配置,搭配官方手册参数,完整讲解嵌入式异步串口通信的底层实现原理,适合嵌入式新手入门学习、项目复盘和面试备考。1、嵌入式UART串口通信核心为异步串行、全双工TTL通信,依靠CH340实现USB与串口协议转换,是嵌入式调试的核心工具;
2026-09-23 17:33:15
138
原创 Days 50 51 单片机与 i.MX6ULL 定时器对比:Timer、EPIT、GPT 原理与实验
51 单片机定时器是入门定时器的经典案例,而 i.MX6ULL Cortex-A7 平台提供 EPIT、GPT 两类硬件定时器。本篇对比两者工作原理,讲解 EPIT 和 GPT 的特性、实验用法,同时附带作业思考题答案,适合嵌入式裸机学习笔记。EPIT 专门用于周期性定时中断,适合固定周期任务。特性:支持自动重装,计数到 0 触发中断。实验案例:1s 定时中断,中断服务函数翻转 LED。(兆赫兹,10⁶)(兆字节,2²⁰)PLL(锁相环):倍频电路。
2026-09-21 23:19:25
101
原创 Days 49 IMX6ULL 裸机开发:时钟树原理与 CCM 时钟配置详解
i.MX6ULL 的时钟系统是裸机开发的基础,GPIO、UART、EPIT、GPT、内核都依赖 CCM 时钟树。本篇结合时钟树框图,讲解晶振、PLL、PFD、分频器、时钟门等核心硬件概念,同时梳理 CCM 寄存器配置流程,完成 ARM 内核、528PLL、480PLL 以及 AHB/IPG/PERCLK 根时钟的配置。开发环境:i.MX6ULL-Mini,裸机 C 语言开发24M 晶振是芯片所有时钟的源头,PLL 负责倍频,PFD 做分数分频,CG 做时钟开关。修改 PLL 高频时钟。
2026-09-21 23:17:37
456
原创 Days 48 IMX6ULL 裸机开发:按键轮询实验 + 外部中断原理剖析(下)
上一篇我们分析了按键轮询的缺陷,并学习了 GIC、CP15 等中断理论。本篇按照标准中断流程编写裸机外部中断代码,同时做模块化解耦,遵循OCP 开闭原则:对修改关闭,对扩展开放。开发环境:i.MX6ULL-Mini 裸机,C 语言 + ARM 汇编,Makefile 工程严格按照中断完整流程编码,汇编负责上下文保护,C 层做中断分发。模块化封装 GPIO 和中断驱动,对外只暴露简单 API,隐藏底层寄存器细节。OCP 开闭原则实现:底层驱动稳定后不再修改;新增中断源只需注册回调函数,代码扩展开放。
2026-09-21 23:12:45
369
原创 Days 47 IMX6ULL 裸机开发:按键轮询实验 + 外部中断原理剖析(上)
一共 3 个按键:两个红色、一个黄色;中间按键:硬件复位按键;左侧:低功耗按键;右侧:本次实验使用的用户测试按键;按键断开时为高电平,按键按下时拉低为低电平。IMX6ULL_MINI_V2.2 (Mini 底板原理图).pdfIMX6ULL 参考手册.pdf中断:CPU 暂停当前正在执行的程序,跳转去处理紧急外设事件;中断服务函数处理完成后,返回原来被打断的代码继续执行。内核:被打断的主体外设:产生中断请求(GPIO 外部中断)
2026-09-21 23:08:42
285
原创 Days 46 i.MX6ULL 裸机开发|从内核切入外设,汇编点亮 LED(补充)
IMX6ULL-Mini 是正点原子推出的基于 NXP i.MX6ULL SOC 的嵌入式开发板,主打低功耗,结构分为核心板 + 底板,核心板采用双列直插和底板相连,方便替换。编译器 (gcc):读取汇编或者 C 源码,翻译成机器码,生成目标文件.o,只编译不链接。链接器 (ld):将多个目标文件合并,分配程序运行地址,生成 ELF 格式可执行文件。格式转换器 (objcopy):对 ELF 文件进行格式转换,剔除符号表、调试信息,生成裸机直接运行的二进制 bin 文件。反汇编器 (objdump)
2026-09-17 19:14:38
239
原创 Days 45i.MX6ULL 裸机开发|从内核切入外设,汇编点亮 LED
学习嵌入式 Linux 驱动的时候,经常会接触到外设操作。但如果不了解底层寄存器是如何工作的,写驱动就像 “黑盒调用”。裸机开发没有操作系统,CPU 上电后直接执行我们写的汇编代码,所有硬件初始化、模式切换、外设控制全部手动实现。本次实验:正点原子 IMX6ULL-Mini 开发板,汇编启动代码,操作 GPIO 寄存器点亮 LED,打通内核到外设的底层链路。IMX6ULL-Mini 是正点原子推出的基于 NXP i.MX6ULL SOC 的嵌入式开发板,主打低功耗,结构分为核心板 + 底板。
2026-09-17 19:11:09
409
原创 DAYS 43 ARM 汇编入门:学会写裸机启动代码(核心指令 + 伪操作详解)
很多同学初学 ARM 汇编会陷入一个误区:把所有 ARM 指令全部死记硬背。但ARM 汇编学习的核心目标,是编写裸机启动代码。处理器上电复位之后,还没有 C 语言运行环境:没有栈、没有全局变量、中断未初始化,C 语言根本跑不起来。启动代码的任务,就是在复位后,搭建 C 语言运行所需要的最基础环境,最后跳转到 C 语言main函数。所以我们不需要啃完整的 ARM 指令集手册,只需要掌握启动代码会用到的伪操作、核心汇编指令即可。初始化异常向量表初始化各个处理器工作模式的栈指针。
2026-09-16 19:49:24
341
原创 DAY43 ARM 体系结构学习笔记|嵌入式入门,从硬件组件到流水线、内存与栈帧
最近在系统学习嵌入式 ARM 体系结构,整理了一份完整的学习笔记,涵盖嵌入式基础概念、各类处理器区别、SOC、总线、MMU、寄存器、内存布局、函数栈帧、编译流程、三级流水线等核心知识点,适合嵌入式、Linux C 开发新手入门。以应用为中心,以计算机技术为基础,软硬件可剪裁的专用计算机系统,设计时需要考虑功耗、体积、环境、稳定性、可靠性等需求。计算机系统分为硬件系统 + 软件系统;运算器、控制器、存储器、输入设备、输出设备。
2026-09-15 22:03:03
233
原创 DAYS42 UART 串口 & DS18B20 单总线时序深度解析
做单片机开发,时序是灵魂。硬件电路接对只是基础,如果时序不对,哪怕硬件没有任何问题,代码也读不出数据、通信乱码。很多新手调 DS18B20、串口踩坑,90% 的问题都出在时序延时不准。本文只聚焦时序理论 + 波形解读 + 编程要点,以 51 单片机为载体,讲解 UART 异步串口时序、DS18B20 单总线时序,帮你看懂时序图,写对延时,避开各种坑。通信双方不共用同一个时钟,依靠预先约定好的波特率来同步数据。全双工:TX 发送、RX 接收,两根独立信号线,可以同时收发数据。
2026-09-14 18:20:50
321
原创 DAYS41 UART 串口通信 + DS18B20 单总线温度传感器
最近学习 51 单片机外设,串口 UART 和 DS18B20 温度传感器是嵌入式入门必学模块。串口实现单片机和电脑 PC 数据交互;DS18B20 是经典单总线数字温度传感器,只需要一根 IO 口就可以完成双向通信,不需要 AD 采样,直接输出数字温度,非常适合做温度采集项目。本文结合学习笔记,把硬件接线、核心原理、时序、命令、坑点全部梳理一遍,适合刚学 51 的同学。通用异步收发器。作用:单片机 ↔ PC、单片机 ↔ 单片机之间数据通信核心引脚:TXD:单片机发送数据RXD:单片机接收。
2026-09-14 18:16:40
416
原创 Days 40 单片机底层实验笔记:GPIO、定时器、外部中断原理与电路实操
最近做单片机基础综合实验,把 IO 输入输出、三极管驱动、定时器时序、外部中断整套原理从头梳理一遍,手绘了大量时序波形、电路原理图、中断向量表。很多初学者刚接触中断时,很难理解 “CPU 正在跑主循环,突然被硬件事件打断” 这个底层逻辑。本篇博客把实验过程、原理、踩坑点一次性整理出来,适合嵌入式入门同学参考。IO 驱动负载忘记三极管扩流,负载不工作,甚至烧坏 IO;按键没有消抖,一次按键触发多次中断;中断函数写得太长,影响系统实时性;忘记开启中断总开关 EA/NVIC,中断永远进不去;
2026-09-11 23:14:52
171
原创 Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
在 Linux C 语言开发中,经常需要对大批量数据做持久化的增删改查操作。如果直接操作文件实现数据管理,需要自己处理解析、索引、条件筛选等逻辑,开发工作量巨大。而数据库软件专门用来管理大批量数据,SQLite是一款轻量级关系型数据库,不需要独立的服务器进程,直接读写磁盘文件,非常适合嵌入式、Linux 小型 C 程序开发。本文基于 Linux C 开发学习资料,整理 SQLite 基础概念、命令操作、SQL 语句,适合刚接触数据库的 C 语言开发者。关系型数据库非关系型数据库OracleMySQL。
2026-09-04 17:26:19
290
原创 DAYS 38 TCP并发服务器模型详解
在网络编程中,TCP 服务端如果只处理单客户端连接,实用性很差。实际项目需要支持多个客户端同时接入,这就引出 TCP 并发服务器。本文基于 Linux C 网络编程,讲解多线程并发服务器模型、4 种 IO 模型,重点拆解selectepoll多路复用接口,包含原理、函数说明、优缺点对比,适合嵌入式 / Linux 后台开发同学学习。阅读范围:TCP 并发服务器模型及其以下知识点表格IO 模型优点缺点适用场景阻塞 IO代码简单,CPU 开销小一个线程处理一个 fd简单小并发程序非阻塞 IO。
2026-09-03 19:29:20
385
原创 Days37 Linux C 网络编程:UDP、TCP 与 HTTP 协议实战详解
在 Linux C 开发中,网络编程是嵌入式、后台开发非常核心的一块知识点。本文基于 Linux 套接字 socket 编程,从 UDP 通信讲起,梳理 UDP、TCP 全套 API、通信模型、三次握手四次挥手,最后讲解 HTTP 协议报文格式,附带核心代码思路,适合零基础入门网络编程,全部知识点来自实际开发学习笔记。阅读范围:UDP 通信 → TCP 通信 → HTTP 协议,适合 C 语言有基础,了解 Linux 系统 IO 的同学。UDP 无连接,简单快速,适合实时业务;
2026-09-02 23:18:41
209
原创 DAYS36 TCP通信核心全梳理:三次握手、Socket API、C/S架构与粘包问题深度解析
第二次 被动方 ACK 确认收到关闭请求,此时被动方还可以继续发数据 被动方: ESTABLISHED → CLOSE_WAIT 主动方: FIN_WAIT_1 → FIN_WAIT_2。三次握手的核心目的:同步双方的初始序列号(ISN),确认双方的发送、接收能力都正常,最终双方都进入 ESTABLISHED (连接已建立)状态。如果只有两次握手,客户端一个迟到的连接请求到达服务端,服务端会直接建立连接并等待数据,而客户端根本没有发起连接的意图,服务端资源会被白白占用。
2026-09-01 22:41:58
257
原创 DAYS35 网络通信
传感器节点、智能终端、物联网网关等设备,无一例外需要网络通信能力,学习内容完全对接就业场景。本文将以嵌入式网络通信为主核心,梳理一套从零到实战、循序渐进的系统化学习路径,帮新手搭建完整的嵌入式网络知识体系,避开无效学习弯路,精准对标企业真实开发需求。物联网、车联网、工业控制、智能硬件等主流嵌入式岗位,均将网络通信、设备上云作为核心考察技能,掌握该能力能大幅拓宽求职范围、提升薪资竞争力。只会点灯、打印日志的嵌入式开发,只能实现设备的单机独立运行,无法实现数据交互、设备互联,也完全接触不到实际商用项目。
2026-08-31 22:10:19
182
原创 DAYS 34 Linux 进程间通信 —— 共享内存、有名信号量详解
进程是操作系统资源分配的最小单位,每个进程拥有独立的虚拟地址空间,进程与进程之间默认不能互相访问对方内存。如果不同进程需要交换数据,就必须依靠进程间通信 (IPC)。前面我们了解了管道、信号、消息队列,本篇重点讲解共享内存与有名信号量 (System V 信号量),共享内存是所有 IPC 机制中效率最高的进程间通信方式,而信号量主要用来做同步互斥,解决多进程访问共享资源产生的资源竞争问题。阅读范围:文档共享内存及以下内容共享内存是进程间通信效率最高的一种 IPC 方式。
2026-08-29 17:24:36
245
原创 DAYS 33 Linux 进程间通信 (IPC) 全面详解|管道、信号、消息队列、共享内存、信号量
在 Linux 系统下,进程是资源分配的最小单位,每个进程拥有独立虚拟地址空间,进程与进程之间天然相互隔离。但实际业务开发中,多个进程经常需要交换数据、传递事件、同步资源,于是就诞生了进程间通信 IPC(Inter‑Process Communication)技术。管道 (无名管道、有名管道)、信号、消息队列、共享内存、信号量,结合内核原理、API 接口、使用场景、优缺点做完整总结,适合嵌入式、Linux 后台开发同学学习参考。
2026-08-28 19:03:19
195
原创 Days 32 Linux 多线程:线程分离属性、多进程 vs 多线程、线程同步互斥锁、信号量
在 Linux C 多线程开发中,默认创建出来的线程是可连接属性(joinable),这种线程在线程退出之后,它的资源(线程栈、线程描述符)不会自动释放,必须调用去回收资源;如果不 join 就会产生僵尸线程,造成内存资源泄漏。而线程分离属性 (detach)就是用来解决这个问题的。本篇博客基于 Linux 下 pthread 库,讲解线程分离属性、多进程与多线程对比、线程间通信、互斥锁、死锁、信号量相关知识点。环境:Ubuntu,gcc 编译需要增加-pthread链接选项。
2026-08-27 22:55:24
183
原创 Days31 Linux 进程编程:waitpid、exec 族、环境变量 & 线程基础详解
在 Linux 开发中,进程是资源分配最小单位,我们经常需要创建子进程、等待子进程退出、在进程中执行新程序,同时线程作为轻量级执行单元也是必学知识点。本文从waitpid开始,讲解进程回收、exec 函数族、环境变量,再过渡到 pthread 线程基础,包含函数原型、参数解析、使用场景、注意事项,适合嵌入式 / Linux C 开发入门学习。阅读前提:已经掌握 fork 创建子进程、wait 函数基础用法。fork()创建子进程后,子进程复制父进程完整代码。
2026-08-26 22:43:27
181
原创 Days 30 进程
重点记忆:局部变量存放在栈;全局 /static 变量存放在数据段 /bss;父、子 1 都会继续执行第二个 fork,分别再生子 2、子 3。💡核心原理:fork 之后子进程复制父进程的代码、数据、堆、栈、文件描述符;项目中优先使用 waitpid + WNOHANG,避免父进程被无限阻塞。机制,只有内存发生修改的时候,才会真正拷贝物理内存,提升效率。同一个程序可以多次运行,生成多个相互独立的进程。,阻止子进程继续向下执行第二个 fork。执行两次 fork,一共产生。只能跳出循环 /switch,
2026-08-25 18:24:59
204
原创 Days 29 嵌入式设备轻量日志模块 MiniLog项目实现
❌不要使用,项目强制 POSIX 系统调用❌write 返回值不等于传入长度!write 有可能写部分字节,嵌入式开发中要循环写确保全部写入。❌忘记校验所有系统调用返回值(open、mkdir、stat、rename、write 都有可能失败,打印输出错误原因)❌处理 read 时直接打印缓冲区,没有处理一条日志跨两次 read,会出现日志错乱。❌日志滚动前没有stat()获取文件大小;rename 备份逻辑写在 read 阶段,应该写在每次写日志之前。❌open 打开日志不加。
2026-08-24 15:48:05
346
原创 DAYS28 文件io及目录io
本文基于Linux环境,梳理文件IO、目录IO全部核心接口,对比标准IO差异,附带使用要点,适合嵌入式、Linux应用开发入门学习。2. 设备文件、串口、管道、socket:必须用文件IO系统调用open/read/write,标准IO的缓冲区会造成数据延迟。文件IO: open/read/write/close ,属于系统调用,Linux内核提供,无用户态缓冲区。标准IO: fopen/fread/fwrite/fclose ,属于库函数,跨平台,自带缓冲区。标准IO有缓冲区,需要fflush刷新。
2026-08-23 23:36:43
252
原创 Day27 IO2
标准 IO 库<stdio.h>封装了文件读写,底层调用系统调用 read/write,自带用户缓冲区,减少系统调用次数提升效率。前面我们学习了fputcfgetcfputs,本篇继续往后学习剩余核心接口。
2026-08-21 19:18:28
189
原创 Days26 IO
标准 IO 是 C 语言<stdio.h>提供的库函数,基于FILE * 文件流指针操作文件,内部自带缓冲区,减少系统调用,可跨平台使用。打开文件 → 读写文件 → 关闭文件优快云博...。❌打开文件不判断返回值,直接操作 NULL 指针 →段错误 segment fault✅每次 fopen 之后必须 if 判断 NULL,配合 perror 看错误。❌fgetc 返回值用 char 接收,导致死循环读文件✅永远用 int ch 接收 fgetc 返回值。❌使用"r"
2026-08-20 22:10:49
218
原创 Days 25 Linux 软件编程|内核原理与 Shell 脚本
bash#赋值等号**左右不能空格**!!![ ]左右两边必须留空格,少空格直接报语法错误。变量用"$var"双引号包裹,文件名带空格不会崩溃。赋值name=abc,等号两边严禁空格。windows 写脚本复制到 Linux,换行符\r报错,执行转换格式。case 每一个分支末尾;;不能省略,否则会穿透执行后续代码。写 shell 脚本核心:多写小脚本,多看返回值定位错误。
2026-08-19 17:54:05
252
原创 Days 24 哈希表及排序和查找
在程序开发中,程序 = 数据结构 + 算法,排序和查找是业务开发里高频使用的基础算法。前面我们学习了顺序表、链表、栈队列、二叉树,本篇聚焦哈希表以及常见的排序、查找算法,梳理原理、时间复杂度、稳定性,帮大家夯实笔试面试高频考点。稳定性记忆:冒泡、插入是稳定;选择、希尔、快排不稳定。时间复杂度O (n²):冒泡、选择、插入;O (nlogn):希尔、快速排序。二分查找:只能用于有序数组,链表不适合。哈希表:核心是哈希函数 + 处理哈希冲突;冲突两大方案:拉链法、开放寻址法。
2026-08-18 18:38:34
221
原创 Days23 树形结构
最近在学习 C 语言数据结构,树属于一对多的逻辑结构,和顺序表、链表这种一对一线性结构有很大区别。树在实际开发中应用非常广:文件系统目录、数据库索引、搜索算法都大量用到树结构。本篇博客基于学习资料整理,把树的基础概念、名词、二叉树分类、遍历方式全部梳理清楚,适合入门学习。线性结构:一对一(顺序表、链表、栈、队列)树形结构:一对多图 / 网状结构:多对多树是一对多的逻辑结构,核心名词:根节点、叶子节点、深度、高度、层、子树、森林;二叉树每个节点最多两个子节点,区分左右孩子;
2026-08-17 20:19:58
196
原创 Days 22栈与队列
程序 = 数据结构 + 算法,栈和队列是开发中最基础、高频使用的受限线性表。后进先出 LIFO,仅栈顶插入、删除先进先出 FIFO,队尾入队、队头出队本文基于 Linux+C 语言实现,包含顺序栈、链式栈、循环队列、链式队列全套代码,配套内存图解、易错点分析,适合期末复习、面试基础复习。表格特性顺序栈链栈循环队列链队列存储连续数组离散链表节点环形数组离散链表容量固定上限无上限固定上限无上限操作复杂度O(1)O(1)O(1)O(1)内存开销仅数据。
2026-08-15 21:01:26
180
原创 Days21 双向链表
只能从表头向后遍历,无法反向查找;删除尾节点、已知节点删除自身时必须从头遍历,效率很低。双向链表(双链表)的出现完美解决了这个痛点,每个节点同时存储前驱指针(指向上一个节点)和后继指针(指向下一个节点),支持正向、反向双向遍历,增删操作效率大幅提升,是实际开发中更常用的链式结构。本文基于纯 C 语言实现无哨兵双向链表,从原理、结构体定义、基础操作、完整代码、易错点全方位讲解,新手也能一次看懂。c运行// 双向链表节点int data;} Node;// 创建新节点exit(-1);
2026-08-14 18:56:24
346
原创 Days20 链式表初学1
在 C 语言数据结构中,顺序表(数组) 存在致命短板:内存连续、长度固定、中间插入 / 删除元素需要批量移位,效率极低。 而链式表(链表) 依靠离散内存 + 指针关联的设计,完美解决数组痛点,是面试、嵌入式开发高频考点。本文基于 Linux+C 基础讲义,从原理、数组对比、完整代码实操带大家吃透单向链表。优点:缺点:优点:缺点:链表由若干节点串联而成,每个节点包含两部分:单向链表只能从头向尾遍历,无法反向查找,最后一个节点指针置为作为链表结束标记。结构体标准定义:c运行2. 头节点概念(工程标准写法)
2026-08-13 22:19:55
311
原创 Days 19 数据结构————顺序表
程序 = 数据结构 + 算法,这是编程领域的核心公式。前面我们系统学习了 Linux 基础、C 语言语法、指针、内存管理等前置知识,从今天开始正式进入数据结构的学习,第一站就是顺序表。顺序表是最基础的线性结构,底层依托数组实现,逻辑简单、随机访问效率极高,也是后续链表、栈、队列的铺垫。本文结合 C 语言实现,从零拆解顺序表概念、存储结构、增删改查全套操作,附带完整可运行代码,新手看完就能上手。顺序表属于线性逻辑结构,数据之间是一对一的关系;存储结构为顺序存储。
2026-08-12 19:18:10
238
原创 Days18 简单的C语言项目 —— 俄罗斯方块游戏
本项目基于Linux C语言实现终端字符版俄罗斯方块游戏,不依赖图形库,纯控制台动画实现。实现功能包括:✅ 无阻塞、无延迟键盘操控(无需回车)✅ 19种自定义方块形态随机生成✅ 方块左右移动、快速下落✅ 右侧下一个方块预览功能✅ 满行消除 + 得分统计✅ 游戏暂停、退出、游戏结束判定✅ 彩色终端界面、无闪烁刷新适合C语言期末课设、Linux编程入门、答辩复习。
2026-08-11 21:45:32
342
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅