- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 嵌入式软件开发中回调函数的应用与实践
回调函数是指由用户定义、通过函数指针传递给其他函数(称为“注册函数”),并在特定事件触发时由注册函数主动调用的函数。其核心特征是**“谁注册,谁实现;谁触发,谁调用”**,本质是函数指针的高阶应用。通过typedef声明回调函数的参数和返回值类型,明确模块间的接口协议。嵌入式开发中需优先考虑参数通用性(如使用uint8_tvoid*传递设备ID或数据)。// 示例:外部中断回调函数类型(传递中断号和用户参数)回调函数是嵌入式系统中实现事件驱动、模块解耦和代码复用。
2025-08-12 16:41:06
1021
原创 嵌入式软件开发中的表驱动法:原理、应用与实战
表驱动法是嵌入式软件开发中“用数据驱动逻辑”的高效设计方法,通过将条件判断转化为查表操作,显著简化代码、提升可维护性和扩展性。在状态机管理、命令解析、数据转换等场景中,其优势尤为突出,能有效应对嵌入式系统资源受限和实时性要求高的挑战。掌握表驱动法的核心是**“将变化的内容(数据、行为)抽离到表中,保持核心逻辑稳定”**。实际开发中,需根据具体场景选择表的类型(数据/函数表)、优化查找效率,并遵循ROM存储、静态初始化等嵌入式最佳实践,才能充分发挥其价值。建议:在嵌入式项目中,当发现代码中出现3个以上相似。
2025-08-12 16:37:27
944
原创 嵌入式C语言中void*指针的应用与实践
/ 声明一个void*类型指针无类型关联void*指针不指定所指向数据的类型,因此无法直接通过*ptr解引用(编译会报错),必须先转换为具体类型指针(如int*float*通用指向能力:可指向任何数据类型(基本类型、结构体、数组、函数等),但不存储类型信息,需开发者手动管理类型转换。void*指针在嵌入式C语言中是一把“双刃剑”:它通过“类型擦除”实现了接口通用化,简化了内存管理、硬件访问和驱动抽象,但也依赖开发者手动维护类型安全,存在潜在风险。
2025-08-12 16:16:16
892
原创 C语言函数指针完全指南:从基础到高阶应用
函数指针本质是指向函数代码在内存中起始地址的指针变量。与普通指针不同,函数指针的类型由其返回值类型和参数类型列表共同决定,这也是函数指针定义语法相对复杂的原因。返回值类型 (*指针变量名)(参数类型1, 参数类型2, ...);(*指针变量名):括号不可省略,确保与变量名结合,否则会被解析为返回指针的函数。参数类型列表:必须与指向的函数参数类型、顺序完全一致。示例:不同类型的函数指针定义// 1. 无参数,无返回值的函数指针// 2. 接收两个int参数,返回int的函数指针。
2025-07-17 17:25:54
2525
原创 C语言进阶学习路线指南
基础阶段(1-2个月):语法→指针→文件IO→工具(GCC/Git),目标:能独立编写中小型程序。进阶阶段(2-3个月):编译链接→内存管理→系统编程,目标:理解程序底层运行机制。提高阶段(3-6个月):模块化→OO思想→嵌入式/OS开发,目标:具备工程化与领域落地能力。
2025-07-16 17:59:16
2397
原创 C语言数组与指针可交换性总结
场景可交换性核心原因示例表达式中地址值与解引用可交换数组名退化后与指针变量地址相同函数参数声明可交换数组参数被编译器转换为指针等价于下标访问(arr[i]可交换下标访问本质是指针算术*(arr + i)sizeof运算符结果不可交换数组名代表整个数组,指针代表地址变量(数组) vs(指针)可修改性(赋值/自增)不可交换数组名是常量,指针是变量ptr++合法,arr++非法地址类型(&数组名vs&指针不可交换数组地址是数组指针,指针地址是指针的指针&arr类型为。
2025-07-15 16:38:01
345
原创 C语言数组与指针混淆的原因详解
数组与指针的混淆源于C语言的语法设计(退化规则、下标等效性)历史继承(B语言影响)及教学简化的共同作用。这种混淆不仅会导致内存错误(如数组越界、修改只读字符串),还会阻碍对C语言内存模型的深入理解。数组和指针的“相似”是语法层面的有限等效,而非本质相同。掌握退化规则的例外情况、函数参数的实际类型、以及二者在内存分配上的根本差异,是编写高效、安全C代码的基础。结合《C语言数组与指针的区别详解》和《C语言中数组与指针的相同场景详解》,可形成对这两个核心概念的完整认知体系。
2025-07-15 15:33:38
396
原创 C语言数组与指针的区别详解
摘要: C语言中数组与指针存在本质区别:数组是连续内存块,代表固定大小的数据集合,而指针是存储地址的变量。关键差异体现在: 内存特性:数组名是常量标识符,sizeof返回整个数组大小;指针是变量,sizeof返回地址存储空间大小 操作限制:数组名不可修改,指针可重新指向不同内存 类型差异:&数组名生成数组指针(步长为整个数组),数组名退化为元素指针(步长为单个元素) 函数传参时数组退化为指针,丢失原始尺寸信息 初始化方式不同,数组支持列表初始化,指针必须指向有效内存 理解这些区别对避免内存错误和编写
2025-07-15 14:14:17
1193
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅