自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 实习笔记(七)GFP自动化插拔测试功能协议解析

本文设计并实现基于GFP协议的自动化插拔测试通信机制,新增消息类型0x41(AutoPlugTest),支持设置(0x01)与查询应答(0x02)子指令。通过小端字节序封装插拔次数、延时等参数,发送指令完成配置,接收并解析实时状态(如剩余次数、延时)。关键点包括:统一小端处理、校验先行、游标推进解析、跨类调用接口公开及版本管理规范,确保协议对齐与系统稳定。

2026-09-14 14:03:39 336

原创 实习笔记(六)主机按钮状态上报完整流程

本项目为某固件新增面板按钮状态上报功能,借助事件桥完成跨进程消息传递,遵循业务账本‑SDK 过渡层‑Protobuf 协议三层分层架构;硬件检测到按键变化后发送事件通知,设备本地账本常驻保存真实状态,上报时逐层拷贝转换为 protobuf 报文发送至外部中心站。中心站解析该数据用于护士站界面展示、操作审计日志留存、硬件故障运维诊断以及医院业务联动归档;设备本地按键功能独立运行,不受网络连通状态影响,上报仅做远端状态同步。

2026-09-03 11:30:06 606

原创 实习笔记(五)面板 board 按钮状态解析任务

仿照背光的,把路径抽成常量,不直接裸写字符串,方便后续统一维护。// 面板按钮BSP文件路径仿照已有成熟代码最稳妥:项目存在同类业务代码,优先直接套用现有实现模式,代码风格、异常健壮性一步到位。命名一致性:函数名、常量名语义要统一,避免自相矛盾。路径抽常量:sysfs 文件路径不要裸写字符串,便于后期维护修改。可读性输出:原始数值转换为可读文本之后再打印日志,不要直接输出 0/1。事件机制边界理解:后端只负责 dispatch_event 发出事件;接收、监听逻辑全部交给前端;

2026-08-28 14:50:38 286

原创 实习笔记(四)嵌入式设备通信功能开发

本次实习参与公司某仪器嵌入式Linux固件开发与调试工作,熟练掌握NFS挂载、Git版本管理等环境运维手段,能够处理挂载异常、源码损坏等工程故障;深入学习C++面向对象相关语法,完成监护仪系统命令下通信丢包率统计数据包的接收解析、日志记录与模块转发功能开发;熟练使用ping、nmap、nc、arp等网络调试工具排查设备网络连通、端口访问类问题,理解加密狗对设备工程调试权限的控制机制,积累了协议解析、问题复现、定位排错的嵌入式项目实战经验。

2026-08-27 10:32:09 290

原创 实习笔记(三)固件通信丢包率统计功能‑开发学习笔记

实习期间参与医疗监护仪固件通信协议开发,完成主命令 0x31 子命令 0x13 通信丢包率统计信息上报解析功能。学习嵌入式分层式通信协议规范,理解设备外接辅箱通信链路的三类错误统计指标含义;实践变长二进制报文解析,处理大小端转换、报文合法性校验,运用指针偏移完成数据流解析。按照项目分层架构完成消息注册、命令分发、业务解码逻辑开发,将解析得到的丢包统计信息输出日志,完成通信交互闭环。个人实习笔记,无盈利目的,若有侵权请告知删除!

2026-08-24 18:01:38 185

原创 C++学习笔记(三):类与对象拓展学习笔记

本文系统讲解了C++中的深拷贝与浅拷贝、初始化列表、类对象成员和静态成员等核心概念。重点阐述了深拷贝的原理及实现方式,通过new开辟独立内存避免重复释放问题;详解了初始化列表的语法规则和四种强制使用场景;分析了类对象作为成员时的构造/析构顺序;最后对比了静态成员与普通成员的特性差异,强调静态成员需在类外初始化的特殊要求。全文通过代码示例和对比表格,清晰呈现了这些重要知识点的实现方法、使用场景和注意事项。

2026-08-14 15:02:01 319

原创 C++ 学习笔记(二):类与对象—— 构造函数与析构函数

本文详细介绍了C++中构造函数和析构函数的核心概念。主要内容包括:1)构造函数(初始化对象)和析构函数(清理资源)的作用及语法规则;2)构造函数的分类(按参数/功能)及三种调用方式(括号法、显式法、隐式转换法);3)拷贝构造函数的定义、调用时机(对象初始化、值传递、值返回)及注意事项;4)编译器自动生成的默认构造规则及特殊情况处理;5)常见易错点,如匿名对象特性、浅拷贝风险等。文章通过代码示例和规则总结,帮助理解这两种特殊成员函数的使用场景和注意事项。

2026-08-13 17:55:37 323

原创 实习笔记(二)NFS 嵌套挂载问题完整复盘

【摘要】NFS共享目录存在嵌套挂载时,客户端无法访问子目录内容的问题源于NFS默认不穿透子挂载点。根本原因是NFS仅导出顶层文件系统,自动屏蔽子目录挂载的独立文件系统。解决方案推荐在服务端/etc/exports配置中添加nohide参数(如/NFS/1 *(rw,sync,nohide)),执行exportfs -r重载配置后客户端重新挂载即可穿透子目录。其他方案包括分目录导出或调整挂载参数,但nohide方案最简洁且支持多级嵌套。需注意修改配置后必须重载NFS并重新挂载才生效,建议将配置写入fstab实

2026-08-08 17:13:18 319

原创 实习笔记(一):NFS、Samba、VNC、Git、CMake、systemd、内核、交叉编译

嵌入式开发环境搭建与工具使用指南 本文档详细介绍了嵌入式开发中常用的技术模块配置方法,涵盖以下核心内容: NFS网络文件系统:Ubuntu主机与ARM开发板文件互通配置,包括服务端安装、权限设置、开发板挂载及故障排查 Samba共享服务:实现Windows与Ubuntu文件共享的完整配置流程 VNC远程桌面:无显示器环境下远程操控Ubuntu的安装与systemd托管方法 Git版本控制:双仓库管理、子模块同步等嵌入式项目高频操作 CMake构建系统:交叉编译配置、第三方库依赖解决及典型编译错误处理 sys

2026-08-08 17:03:11 405

原创 C++学习笔记(一):类与对象概念、无名联合体、初始化列表

本文系统对比了C语言(面向过程)与C++(面向对象)的核心差异,并详细解析了C++类与对象的核心特性。主要内容包括: 核心思想对比:C语言以函数为中心,数据与操作分离;C++以类为中心,封装数据与行为,支持继承、多态等特性 C++核心知识点:类的定义与对象创建、三大特性(封装/继承/多态)、构造函数与析构函数、常成员等 关键细节:初始化列表的4种强制使用场景、类内无名联合体的实现与注意事项 易错点总结:初始化顺序、联合体数据管理、访问控制等常见问题 文章通过代码示例直观展示两种编程范式的差异,重点突出了C+

2026-08-08 14:49:36 579

原创 ARM嵌入式学习(五)---IMX6ULL外部中断

摘要:本文详细解析了ARM中断处理机制,重点介绍了三类中断源(SGI、PPI、SPI)及其特性,阐述了异常向量表与中断服务函数表的区别与联系。通过按键中断实例,完整呈现了从中断触发到返回的流程,包括硬件自动操作、现场保存、中断号获取、C语言分发处理等关键环节。文章特别强调了7个易错点,如LR修正、EOIR写入、中断标志清除等,并指出不同CPU模式需配置独立栈空间。整个中断流程可概括为:外设触发→GIC接收→硬件跳转→汇编处理→C函数执行→恢复现场返回。

2026-04-02 21:00:56 641

原创 ARM嵌入式学习(四)--- C语言应用:led、beep、key

本文介绍了基于i.MX6ULL处理器的嵌入式系统开发流程。主要内容包括:1.汇编启动代码完成异常向量表设置、工作模式切换和栈初始化;2.主函数通过CCM模块使能时钟,实现按键控制LED和蜂鸣器的功能;3.LED、蜂鸣器和按键的驱动实现;4.详细解析了BSP和SDK的概念与作用;5.完整的Makefile构建系统,包含编译流程、关键注意事项和自动生成规则。特别强调了ARM处理器多模式栈初始化的必要性,以及Makefile中启动文件顺序的重要性。整个系统实现了从底层硬件驱动到上层应用开发的完整流程。

2026-04-01 19:52:37 504

原创 ARM嵌入式学习(三)---汇编应用:LED点亮

本文详细介绍了i.MX6ULL裸机开发中GPIO控制LED的实现过程。主要内容包括:硬件原理分析、GPIO配置四步法(功能选择、电气特性、方向设置、电平输出)、裸机代码结构设计,以及完整的编译链接流程(编译生成.o→链接为.elf→转换为.bin→反汇编调试)。重点阐述了寄存器配置方法、运行地址设置和SD卡烧写步骤,并总结了裸机开发的注意事项。通过该实验,掌握了ARM Cortex-A7架构下GPIO的底层驱动方法,为后续外设开发奠定了基础。

2026-03-31 20:18:22 600

原创 ARM嵌入式学习(二)---ARM 汇编与中断学习笔记

本文系统介绍了ARM汇编语言的核心知识体系,主要内容包括:C语言基础数据类型与变量特性;ARM汇编伪操作(数据定义、符号定义等)及其应用;汇编源程序的段式结构(代码段与数据段);ARM指令集六大分类及常用指令;指令格式与条件码执行机制;函数调用原理与栈操作实现;工作模式切换方法;以及SWI软中断处理流程。重点剖析了数据处理指令、堆栈操作、混合编程规范和中断处理机制,为ARM裸机开发奠定了理论基础。掌握这些核心概念对理解ARM架构、编写高效底层代码至关重要。

2026-03-30 21:13:38 923

原创 ARM嵌入式学习(一)---ARM基础概念学习

本次学习围绕ARM处理器体系结构展开,系统梳理了ARM架构核心概念、硬件组成、工作模式与异常处理机制。明确了ARM作为RISC架构的定位及其与普通单片机的区别,掌握了Cortex-A/M/R三大系列的应用场景;区分了RAM、ROM、Flash的特性差异,以及CPU/MCU/MPU/SOC的不同定位。深入学习了ARM内部寄存器(R0~R12、PC、LR、SP、CPSR、SPSR)功能、七种工作模式及其权限规则,重点理解了异常触发、现场保存与恢复的完整处理流程。同时掌握了ARM栈结构(减栈+满栈)

2026-03-30 20:17:46 836

原创 SQLite3数据库查询学习笔记2

本文介绍了SQLite数据库的基本查询语句和回调函数的使用方法。主要内容包括:1)基本SQL查询语句,如全表查询(SELECT*FROM)、条件查询(WHERE)和表结构查询(PRAGMA);2)详细解析了sqlite3_exec回调函数的参数含义和使用场景;3)提供了一个完整的C语言示例代码,展示如何通过回调函数实现用户登录验证功能。该示例涵盖了数据库连接、SQL语句执行、回调函数处理和资源释放等关键操作流程。

2026-03-27 21:10:23 109

原创 SQLite3数据库学习笔记1

摘要:本文介绍了嵌入式数据库SQLite的特点及使用方法。SQLite具有轻量级、单文件存储、支持标准SQL语法等特点,适合嵌入式设备使用。文章详细说明了数据库基本操作指令、常用SQL语句(建表、查询、更新等)以及C语言编程接口。最后提供了一个将字典数据批量导入SQLite数据库的完整C语言示例代码,展示了数据库连接、SQL执行和事务处理等核心操作流程。

2026-03-27 20:50:47 442

原创 TCP 并发学习笔记(进程 fork / 线程 pthread)

本文介绍了两种实现服务器并发处理客户端连接的方法:多进程(fork)和多线程(pthread)。多进程方式通过fork创建子进程处理连接,主进程继续监听,具有独立稳定但资源开销大的特点。多线程方式通过pthread_create创建线程处理连接,设置线程分离自动释放资源,具有轻量高效但需处理同步问题的特点。两种方法都实现了主进程/线程持续监听,子进程/线程处理具体业务的基本并发模型。文章对比了两种方法的优缺点,并提供了关键实现代码示例。

2026-03-27 20:19:11 193

原创 多路IO学习笔记

IO多路复用是一种高效的IO处理机制,允许单线程同时监控多个文件描述符。相比传统多进程/线程模型,它显著减少资源消耗和切换开销,支持更高并发。主要实现方式包括:1)select:跨平台兼容但性能受限,需全量遍历描述符;2)epoll:Linux专属高性能方案,仅处理就绪事件,支持百万级连接。核心区别在于epoll采用事件驱动和共享内存,避免select的全量遍历和数据拷贝问题。实际应用中,select适合少量连接或跨平台场景,epoll则是高并发服务器的首选。代码示例展示了两种方式实现的TCP服务器,体现了

2026-03-27 20:07:22 525

原创 网络编程学习笔记(数据封包拆包 + 协议格式 + 网络工具 + HTTP 协议)

本文系统介绍了网络数据传输的核心原理与协议格式。主要内容包括:1) 数据封包拆包过程,详细说明TCP/IP五层模型中各层的协议头添加与剥离机制;2) 三大核心协议格式:以太网MAC帧(数据链路层)、IP数据报(网络层)和TCP报文段(传输层)的详细结构;3) 常用网络测试工具如ping、telnet、Wireshark等的使用方法;4) HTTP协议的工作机制,包括URL格式、请求/响应报文结构及状态码含义。文章重点阐述了协议头在网络通信中的关键作用,以及如何通过抓包工具分析网络数据流,为理解网络通信原理和

2026-03-24 20:47:25 2224

原创 网络编程-TCP 协议学习笔记

本文系统介绍了网络通信模式与TCP协议核心知识。主要内容包括:1)三种网络通信模式(C/S、B/S、P2P)的特点与交互逻辑;2)TCP协议核心特征(面向连接、可靠传输等)及会话过程(三次握手、四次挥手);3)Linux环境下C/S模式编程流程及关键函数;4)TCP黏包问题的成因与解决方案;5)TCP与UDP协议的对比分析。文章提供了完整的服务器端和客户端代码示例,涵盖了套接字创建、绑定、监听、连接、数据收发等关键步骤,并详细说明了各函数的参数与返回值,为网络编程实践提供了实用参考。

2026-03-18 20:49:14 645

原创 网络编程第一天学习笔记(重点:UDP 协议)

本文系统介绍了网络通信的核心知识,包括OSI七层模型和TCP/IP四层模型的结构与功能,详细解释了DNS、DHCP、TCP等关键网络协议。重点阐述了UDP协议的特性、通信流程及核心函数(socket/bind/recvfrom/sendto),通过服务端和客户端的代码示例展示了UDP编程的实现方法。同时涵盖了IP地址分类、常用Linux网络指令、网络编程基础概念等内容,为网络编程学习提供了全面的理论基础和实践指导。

2026-03-18 19:56:36 691

原创 进程间通信(IPC)学习笔记(信号通信 + 共享内存)

不可捕捉 / 忽略的信号SIGKILL(9 号)、SIGSTOP(19 号),只能默认处理(终止 / 暂停),无法通过signal修改;信号处理函数的可重入性:自定义处理函数中应避免调用非可重入函数(如printfmalloc),防止数据竞争。在所有的信号中有如下两个特例:10号信号SIGUSR1,12号信号SIGUSR2,这两个信号专门预留给程序员使用的未定义信号。应用:回收子进程,防止出现僵尸进程//SIGCHLD ,对于父进程而言,默认情况是忽略。

2026-03-17 20:54:29 543

原创 进程间通信(IPC)- 管道专题学习笔记

今日聚焦进程间通信(IPC)核心内容,补充计数信号量后,重点掌握管道(无名管道pipe、有名管道fifo)相关知识:1. IPC分类:分为古老通信方式(管道、信号等)、IPC对象通信、Socket通信三类,管道是基础且核心的古老通信方式。2. 管道通用特性:半双工、基于文件描述符(读端fd[0]、写端fd[1])、内核级缓冲区存储(FIFO队列,数据读走即消失,缓冲区大小有限),存在写阻塞、读阻塞、管道破裂、read返回0四大关键读写场景。

2026-03-16 21:13:01 693 1

原创 线程学习笔记(含进程区别、核心函数、互斥同步与死锁)

本次学习围绕线程编程核心知识点展开,首先明确了线程与进程的核心区别,厘清两者在资源分配、调度效率、独立性和通信成本上的差异;随后系统学习了线程相关核心函数,包括线程号获取(pthread_self())、线程退出(pthread_exit()、pthread_cancel())、线程回收(pthread_join())、线程传参(单个参数、结构体多参数)及线程分离(pthread_detach()),每个函数均掌握其功能、参数、返回值、注意事项及代码实现;接着深入学习线程控制,重点掌握互斥锁(定义、初始化、

2026-02-26 21:07:41 689

原创 数据结构学习笔记:树 & 哈希存储

本文系统介绍了树结构与哈希存储的核心概念及实现方法。主要内容包括:1)树的基本概念和二叉树特性,如节点度、遍历方式等;2)二叉树的C语言实现,涵盖创建、前/中/后序遍历及层序遍历算法;3)哈希存储原理与拉链法实现,包含哈希函数、冲突处理和基本操作。重点讲解了递归遍历、队列辅助的层序遍历等关键技术,并提供了完整代码示例。文章强调二叉树遍历的核心地位和哈希表O(1)查询的特性,为数据结构学习提供了实践指导。

2026-02-06 20:16:42 345

原创 栈与队列(Stack & Queue):顺序实现 vs 链式实现

本文详细讲解了栈和队列的数据结构实现与操作。主要内容包括:顺序栈和链式栈的实现原理、核心操作(入栈/出栈/读栈顶/销毁)及代码实现;顺序队列和链式队列的特性(FIFO)及实现方法(入队/出队/销毁)。通过对比分析,指出顺序实现的效率优势和容量限制,以及链式实现的灵活性和内存开销。最后总结了栈(LIFO)与队列(FIFO)的核心区别及应用场景,为数据结构学习提供了全面指导。

2026-02-04 20:23:18 1010

原创 今日学习笔记:双向链表、循环链表、栈

本文总结了双向链表和循环链表的核心操作与实现要点。双向链表需维护prev和next指针的联动,带头节点结构简化了首尾操作;循环链表尾节点指向头节点形成闭环。关键操作包括:头/尾删除、指定值删除、销毁链表等,均需注意指针更新和内存释放以避免断裂和泄漏。循环链表创建时需初始化头节点指向自身形成空链表。所有操作需严格处理边界条件,确保链表完整性。

2026-02-03 20:59:06 797

原创 链表进阶 & Makefile & 双向链表 学习笔记

本文总结了链表进阶和工程化工具的核心内容:1. 单链表排序算法:详细讲解了选择、冒泡和插入三种排序的实现思路,均采用数据交换而非指针调整,强调防御性检查和指针安全操作。2. Makefile工程化:介绍增量编译原理,解析目标-依赖-命令结构,提供标准编译规则模板和清理指令,强调Tab键使用规范。3. 双向链表实现:从结构体定义到核心操作(创建、判空、打印、头尾插入),重点说明双向指针调整顺序和循环链表特性,保持与单链表一致的命名规范。学习要点包括算法思想理解、工程规范遵守和指针操作安全,后续可拓展删除操作和

2026-02-02 20:24:59 575

原创 数据结构学习笔记(第二天):链表进阶操作全解析

本文总结了单链表的四种进阶操作:1)快慢指针法查找中间节点;2)双指针间距法查找倒数第k个节点;3)快慢指针法检测链表环;4)迭代法实现链表反转。重点讲解了各算法的实现思路和代码要点,强调防御性编程和边界条件处理。核心技巧是双指针法,能在O(n)时间复杂度和O(1)空间复杂度下高效解决问题。文章还指出了常见易错点,如指针越界、断链等问题,并建议后续学习双向链表、链表排序等进阶内容。

2026-02-01 19:46:38 673

原创 Day1 数据结构学习笔记:从基础概念到链表增删改查

数据结构是组织和管理数据的方式,核心包括逻辑结构、存储结构和算法。线性表作为基本线性结构,可通过顺序存储(数组)或链式存储(链表)实现。本文重点讲解单链表实现,涵盖创建、插入(头插/尾插)、查找、修改、删除(头删/尾删/指定值)及销毁等核心算法,强调避免断链和内存泄漏。关键点包括:头结点简化操作、"先保存后修改"原则、指针使用规范(一级指针修改内容,二级指针修改头指针)。典型错误包括未检查内存申请、操作导致断链、销毁后未置空指针。后续可学习链表进阶操作及其他线性表实现。

2026-02-01 18:37:40 695

原创 C 语言底层语法(共用体 - 枚举 - typedef - 位运算 - 内存管理)笔记

本文系统介绍了C语言中的共用体、枚举、typedef、位运算和内存管理五大核心概念。共用体通过内存共享特性实现高效存储和大小端判断;枚举提升了代码可读性;typedef简化了类型定义。位运算部分重点讲解了异或交换、移位运算和循环左移的实现原理。内存管理详细解析了堆区内存的申请(malloc/calloc/realloc)与释放(free)机制,并总结了内存泄漏、野指针等常见问题的防范措施。这些底层技术对驱动开发、嵌入式系统等场景具有重要应用价值,是C语言程序员的必备技能。

2026-01-28 20:11:37 833

原创 C语言学习笔记:指针函数、函数指针与结构体

本文系统梳理了C语言中指针函数、函数指针和结构体三大核心概念。指针函数返回指针类型,需配合malloc动态内存分配使用,强调"申请-使用-释放-置空"四步准则;函数指针用于回调机制,实现代码解耦;结构体用于封装复杂数据,需注意内存对齐规则和指针传参优化。三者共同构成了C语言处理动态内存、函数回调及数据组织的核心机制,是开发复杂程序的重要基础。

2026-01-26 20:49:24 753

原创 指针进阶:整型 / 字符型二维数组操作 + 指针数组用法梳理

本文系统介绍了指针操作二维数组的方法:1. 整型二维数组的内存连续存储特性,通过行指针*(arr+i)+j访问元素;2. 字符二维数组每行存储独立字符串,使用strcmp等函数操作;3. 指针数组(char*arr[])的灵活优势,元素可指向不同长度字符串。重点对比了二维数组与指针数组的内存布局差异,强调指针类型匹配、字符串操作规范等易错点,并给出遍历、查找最大值、选择排序等典型代码示例。核心在于理解行指针步长、解引用层级以及指针数组的灵活性特点。

2026-01-23 21:05:08 830

原创 从算法到内存操作:快速排序、const 关键字与指针实现字符串函数

本文总结了快速排序算法、const关键字的用法以及指针实现字符串操作的方法。快速排序采用分治策略,通过选取基准值分区并递归排序子数组。const用于定义常量,可修饰变量、指针及函数参数,限制修改权限。通过指针可高效实现字符串函数(strlen、strcpy等),直接操作内存提升效率,但需注意边界条件处理。这些内容涵盖了算法实现、常量定义和指针操作等核心编程知识点。

2026-01-22 21:24:12 313

原创 指针运算与一维数组操作:排序与查找实现

本文介绍了指针的基础知识和应用。首先讲解了指针的定义、内存占用大小(32位系统4字节,64位系统8字节)及其基本用法,包括指针变量的声明、初始化和解引用。其次阐述了指针的常见用途,如动态内存分配、函数参数传递和数据结构实现。重点讲解了指针在整型一维数组中的应用,包括数组的指针表示、迭代遍历方法,以及使用指针实现的四种常见算法:选择排序、冒泡排序、插入排序和查找操作。这些内容为理解和使用指针操作数组提供了实用指导。

2026-01-22 21:13:44 201

原创 预处理指令与 C 语言编译过程学习笔记

本文介绍了C语言预处理的三个核心知识点:1. 预处理目的:处理宏定义、文件包含和条件编译指令,为编译做准备;2. 编译流程:包括预处理(.i)、编译(.s)、汇编(.o)和链接(可执行文件)四个阶段;3. 重点技术:宏定义(含带参宏)的语法与注意事项,其与函数的本质区别,以及文件包含和条件编译的使用场景。特别强调了带参宏的括号使用、宏作用域管理,以及条件编译在调试和跨平台开发中的实用价值。这些预处理技术能有效提升代码的可维护性和执行效率。

2026-01-21 20:59:12 885

原创 函数的实现

本文总结了函数实现的关键要点:1. 函数通过"类型标识符 函数名(形式参数)"格式定义,强调类型标识符决定返回值类型,形式参数需明确类型且与实参匹配;2. 函数定义位置需注意前置声明问题;3. 函数嵌套调用依赖调用栈机制,通过栈结构管理执行流程;4. 介绍了三种函数调用方式(语句调用、表达式调用、参数调用)。特别指出数组不能作为返回值,void函数无需return等注意事项。

2026-01-21 20:25:23 435

原创 二维数组及字符型数组

本文介绍了二维数组和字符数组的相关知识。主要内容包括:二维数组的定义、动态内存分配和多种初始化方法;字符数组的定义、字符串输入输出操作,以及字符串处理函数的使用(如strlen、strcpy、strcat等)。特别强调了动态内存分配时的注意事项,包括malloc的使用和内存释放,以及字符串操作时的缓冲区安全问题。文章提供了详细的代码示例,帮助理解数组的基本操作和常见字符串处理函数的实现原理。

2026-01-16 21:31:30 503

原创 c语言的排序方法

冒泡排序通过重复比较相邻元素并交换顺序错误的元素,将较大元素逐渐“浮”到数组末端。时间复杂度为O(n²),可通过标志位优化提前终止。选择排序通过重复查找未排序部分的最小元素并将其放到已排序部分的末尾。时间复杂度为O(n²),适合小规模数据排序。:直接在原数组上操作,通过移动元素实现插入。空间复杂度为O(1),时间复杂度为O(n²)。二分查找要求数组已排序,通过反复将搜索范围减半实现高效查找。时间复杂度为O(log n)。:需要额外空间存储已排序部分,每次将新元素插入到正确位置。空间复杂度为O(n)。

2026-01-15 21:07:10 273

空空如也

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

TA关注的人

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