- 博客(17)
- 收藏
- 关注
原创 《嵌入式C语言笔记(十七):进制转换、结构体与位运算精要》
本文摘要: 进制转换:实现10进制转16进制算法,包含字符串反转功能; 结构体详解:包含定义、初始化、访问方式及内存对齐规则; 共用体特性:共享内存空间,大小为最大成员尺寸,用于检测大小端存储; 枚举与类型重定义:演示枚举常量定义和typedef简化类型声明; 位运算技巧:展示寄存器操作常用位运算方法; 学生管理系统:实现结构体数组的排序(按姓名/成绩)、反转等操作; 共用体应用:通过存储整型和字符型检测系统字节序。
2025-07-31 20:23:41
136
原创 《嵌入式C语言笔记(十六):字符串搜索、动态内存与函数指针精要》
指针数组作为函数的参数,形参是指向指针的指针(下面的代码是调用上面的函数)遍历长字符串每个起始位置,比较从该位置开始的子串与短字符串。会覆盖结束符导致无限循环。使用完内存后,要用free释放内存。计数,匹配成功时计数增加。需处理重叠匹配情况。free:归还内存,不归还会导致内存泄漏。传参方式,例子在下下一个。能指向函数入口地址的指针。能安全处理自复制情况。
2025-07-30 20:51:02
254
原创 《嵌入式C语言笔记(十五):字符串操作与多维指针深度解析》
本文总结了C语言中字符串、指针和数组的重要操作与安全实践。主要内容包括:1.字符串操作推荐使用strn系列安全函数(如strncpy、strncat)替代危险函数;2.const关键字保护数据不被修改,void*指针需类型转换;3.区分数组指针和指针数组的用法;4.指针函数禁止返回局部变量地址,可用静态或全局变量;5.提供字符串基本操作函数实现和二维数组操作示例。关键技巧:使用const保护参数,注意指针生命周期管理,安全操作优先选择带长度限制的函数版本。这些实践对嵌入式开发等安全敏感场景尤为重要。
2025-07-29 18:55:04
275
原创 《嵌入式C语言笔记(十四):指针进阶与快速排序算法实现》
指针安全:避免野指针,初始化为NULL。类型匹配是地址运算的前提快速排序核心:分治思想 + 递归实现,基准选择影响效率嵌入式注意:避免深度递归导致栈溢出(可改用迭代版快速排序)。指针运算需严格对齐内存。
2025-05-17 22:45:48
1130
原创 《嵌入式C语言笔记(十三):预处理命令与指针基础全解析》
C程序的编译流程包括预处理、编译、链接和生成可执行文件。预处理阶段处理宏定义和头文件包含,宏定义分为不带参数和带参数两种,带参数宏需注意参数加括号以避免运算符优先级错误。文件包含处理通过#include指令引入系统或用户自定义头文件,并使用头文件保护防止重复包含。条件编译指令如#ifdef和#if用于跨平台代码适配和调试代码开关。指针变量用于存储内存地址,通过*运算符间接访问内存值,需注意避免野指针问题。宏的优点是提高代码复用性和减少函数调用开销,但调试困难且易引发错误。指针操作需谨慎,确保地址合法性。预处
2025-05-16 15:53:37
486
原创 《嵌入式C语言笔记(十二):二维数组传参、作用域与生存期全解析》
今日学习内容主要围绕二维数组作为函数参数、标识符作用域与可见性、变量生存期以及开发技巧展开。在二维数组作为函数参数时,需显式传递行数和列数,且数组名传递的是首行地址。标识符作用域分为局部和全局,遵循“先定义后使用”和“同作用域禁止重名”的规则。变量生存期包括静态和动态,静态变量在程序启动时创建,结束时销毁,而动态变量在进入作用域时创建,离开时销毁。开发技巧涉及Vim操作和多文件编译,如分屏编辑和联合编译多个.c文件。总结中强调了二维数组传参的维度信息、作用域规则、生存期管理以及多文件开发的重要性。
2025-05-14 18:16:28
583
1
原创 嵌入式C语言笔记(十一):递归调用与数组参数传递规则详解
今日学习内容主要围绕递归函数调用和数组作为函数参数展开。递归函数调用包括直接递归和间接递归,但在嵌入式开发中需注意内存消耗和栈溢出风险,建议优先使用循环。数组作为函数参数时,数组元素传递为值传递,不影响原数组;数组名传递为地址传递,可修改原数组,需注意长度管理。字符数组传递依赖\0自动判断长度。此外,还对比了不同参数传递方式的效率和适用场景,并提供了多个练习示例,包括斐波那契数列计算、数组排序、查找等操作。总结中强调递归在嵌入式场景中的慎用原则,以及数组参数传递的注意事项和内存安全风险。
2025-05-11 00:36:12
593
原创 嵌入式C语言笔记(十):函数调用机制与内存分区深度解析
今日学习内容主要围绕函数定义与调用、参数传递规则、函数调用底层原理、内存分区及嵌入式开发注意事项展开。函数定义需注意返回值类型匹配,禁止返回数组但允许返回指针。参数传递包括值传递和指针传递,参数入栈顺序为从右到左。函数调用涉及程序计数器和栈帧操作,栈区容量有限,需防止溢出。内存分为栈区、堆区、静态区、字符串常量区和代码区,各有其存储内容和生命周期特性。嵌入式开发中需注意栈空间限制、堆内存管理和常量安全。总结强调函数设计、调用机制、内存分区理解和优化方向。
2025-05-10 15:34:39
680
原创 嵌入式C语言笔记(九):二维数组存储原理与核心操作详解
1. 二维数组本质:一维数组的扩展,按行连续存储2. 内存视角:a、a[0]、a[0][0]地址相同但类型不同3. 行/列计算:通过`sizeof`运算符动态获取维度信息4. 嵌入式应用:图像处理、矩阵运算。
2025-05-07 20:42:38
389
原创 嵌入式C语言笔记(八):字符数组与字符串操作函数全解》
声明语法:`char s[100];`(容量100字节,含结尾`\0`)初始化方式:// 方式一:逐个字符初始化// 需手动添加\0// 方式二:字符串字面量初始化(自动补\0)// 等效 {'h','e','l','l','o','\0'}1. 字符数组本质:以`\0`结尾的字符序列2. 安全输入:优先使用`fgets`避免缓冲区溢出3. 函数选择:长度计算 → `strlen`(逻辑长度) vs `sizeof`(物理容量)字符串操作 → 严格检查目标空间大小。
2025-04-24 18:56:02
819
原创 《嵌入式C语言笔记(七):数组基础与常用算法全解析》
1. 数组特性:连续内存空间,索引从0开始2. 排序算法:冒泡、选择、插入的适用场景与实现差异3. 高效查找:二分法依赖有序数组,大幅降低时间复杂度4. 嵌入式注意:避免越界访问,优先选择内存友好算法。
2025-04-23 21:45:41
494
原创 《嵌入式C语言笔记(六):循环控制语句与流程跳转全解析》
(1) 循环设计核心:严格管理三要素(初始化、条件、更新)(2) 循环选择原则:明确循环次数 → `for`条件先验 → `while`条件后验 → `do...while`(3)嵌入式规范:禁用 `goto`,优先使用结构清晰的循环(4) 控制语句陷阱:`break` 仅跳出当前层循环,`continue` 慎用于复杂逻辑。
2025-04-22 18:04:57
512
原创 《嵌入式C语言笔记(五):关系运算符、逻辑运算与条件控制全解》
1. 关系运算:优先级与短路特性决定逻辑判断流程2. 条件分支:`if-else`实现多路分支,`switch-case`处理离散整型值3. 代码规范:常量前置比较、合理使用三元运算符简化代码4. 安全设计:利用逻辑运算符短路特性避免非法操作(如除零错误)
2025-04-21 22:05:14
1412
原创 《嵌入式C语言笔记(四):逗号运算符与输入输出函数深度解析》
输入错误处理,输入错误处理,当没有按规定输入字符类型时,会发生死循环,这是因为scanf会产生一个缓冲区,缓冲区里面的字符无法被读取,所以一直报错。等价于 (int b=2), 3 → 编译报错。pow(x, y):计算x的y次方(如 pow(2, 0.5) 等效 sqrt(2))scanf("格式字符串", &变量1, &变量2, ...);// a=5(逗号表达式结果为最后一个值)%4d:至少输出4位,不足补空格(右对齐)int c = (2, 3);
2025-04-18 22:43:07
463
2
原创 《嵌入式C语言笔记(三):转义字符、运算符与类型转换全解析》
int = short 符号位扩展(正补0,负补1)\ddd 八进制转义(ddd为1~3位数字)double = int 直接赋值,类型不变(值转浮点)\xhh 十六进制转义(hh为1~2位数字)左值:可寻址的变量(如 int x;
2025-04-17 19:18:28
1538
1
原创 《嵌入式C语言笔记(二):变量与常量的存储奥秘及数据类型深度解析
2. 小端存储:低字节在前(如 `0x12345678` 存储为 `78 56 34 12`)。嵌入式注意:优先选择合适类型节省内存(如 `short` 替代 `int`)。十六进制:以 `0x` 或 `0X` 开头(如 `0x1A`)。3. 绝对值函数:`abs()` 用于整型,`fabs()` 用于浮点型。八进制:以 `0` 开头(如 `0123`)。类型:`char`(1字节,范围:-128 ~ 127)。十进制:无前缀(如 `123`)。输出格式:`%c`,用单引号包裹(如 'A`)。
2025-04-16 19:31:34
510
1
原创 《嵌入式Linux笔记(一):基础命令与C语言编译入门》
作为一名嵌入式开发新手,今天开启了Linux系统基础学习之旅,目标是掌握常用命令行操作和C语言编译流程。本文记录学习过程中的核心知识点与实战步骤,帮助同样入门的小伙伴快速上手!./---.out 运行程序。命令模式:默认进入,按 `i` 进入编辑模式。vi main.c # 创建并编辑C文件。保存退出:`Esc` → `:wq`rm:删除文件(`-r`删除目录)-a:显示所有文件(含隐藏文件)-l:详细列表(权限、大小等)mkdir:创建文件夹。touch:创建空文件。
2025-04-15 19:39:38
357
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人