- 博客(23)
- 收藏
- 关注
原创 嵌入式第二十三课 !!!树结构与排序(时间复杂度)
摘要:本文介绍了二叉树的基本概念和特性。二叉树是n个结点的有限集合,具有根节点和左右子树结构,其结点最多有两个子树。文中阐述了特殊的二叉树类型(斜树、满二叉树、完全二叉树)及其特性,如第i层最多有2^(i-1)个结点。同时介绍了二叉树的三种遍历方式(前序、中序、后序),并提供了C语言实现代码,包括创建二叉树、三种遍历方法以及销毁树结构的程序编写。最后提及了各种排序算法的时间复杂度。
2025-08-08 20:26:26
268
原创 嵌入式第二十二课!!!链式队列与哈希表
本文介绍了链式队列和哈希表的数据结构实现。链式队列部分详细说明了创建队列、入队(尾插)、出队(头删)、判空、获取队头元素、销毁队列和遍历等操作的C语言实现代码。哈希表部分重点讲解了哈希存储原理、哈希冲突解决方法(开放地址法和链地址法),并给出了哈希表的创建、插入数据(按字母顺序排序)、查找数据、销毁哈希表和遍历等功能的实现代码,其中哈希表用于存储通讯录信息,使用首字母作为哈希函数的关键字。全文通过具体代码示例展示了这两种数据结构的实现方法。
2025-08-07 20:51:56
437
原创 嵌入式第二十一课!!内核链表、栈结构与队列
本文主要讲解了数据结构中的栈和队列实现方式及应用。在栈部分,详细介绍了顺序栈的四种类型(满增栈、满减栈、空增栈、空减栈)及其操作特点,以及链式栈的实现方法。队列部分重点讲解了顺序队列的假溢出问题和循环队列的解决方案,包括空满判断方法和越界处理。文章还通过代码示例展示了链式栈和顺序队列的具体实现,包括创建、入栈/入队、出栈/出队、判空、销毁等操作。最后简要提及链式队列的特点和应用场景,并预告后续课程内容。这些数据结构在程序设计中有着广泛应用,如系统调用、递归实现、缓冲区管理等场景。
2025-08-06 20:15:07
1482
原创 嵌入式第二十课!!!Makefile文件与双向链表!!!
本文介绍了Makefile文件的基本语法和GCC编译的四个步骤:预处理、编译、汇编和链接。详细讲解了Makefile的编写规则,包括目标文件与依赖文件的定义、变量的使用、clean清除操作以及系统变量$^、$<、$@的应用。同时说明了如何指定头文件和库文件路径,并解释了Makefile的时间戳特性。此外,文章还介绍了双向链表的实现,包括创建链表、头插/尾插数据、头删/尾删数据、销毁链表和遍历操作的具体代码实现。通过对比单向链表,展示了双向链表在遍历操作上的灵活性。
2025-08-05 20:15:02
1121
原创 嵌入式第十九课!!!单向链表的应用!!!!
本文介绍了单向链表的几种高级操作:1. 使用valgrind工具检测内存泄漏,通过销毁函数确保所有堆内存被释放;2. 快慢指针技术:用于高效查找链表中间节点和倒数第K个节点;3. 链表逆序实现:通过头插法重新连接节点;4. 链表插入排序:通过断开和重新插入节点实现数据排序。文章详细讲解了每种操作的实现原理、流程图解和完整代码,并强调了特殊情况的处理。这些技术提升了链表操作的效率,是数据结构学习中的重要内容。
2025-08-04 20:40:42
1247
原创 嵌入式第十八课!!数据结构篇入门及单向链表
本文系统介绍了数据结构的基本概念和单向链表的实现方法。首先阐述了数据结构的定义,包括逻辑结构(集合、线性、树形、图形)和物理结构(顺序、链式、索引、散列)的分类。重点讲解了单向链表的实现,包括创建链表对象、头插/尾插数据、头删/尾删数据、查找修改数据以及销毁链表等核心操作。通过C语言代码示例,详细说明了链表节点的结构定义和各种操作的实现逻辑,强调指针和结构体的应用技巧。文章指出单向链表作为动态存储结构,具有插入删除方便、内存利用率高的特点,是数据结构的重点内容之一。
2025-08-02 20:15:04
1109
原创 嵌入式第十七课!!!!位运算!!!
本文介绍了C语言中常用的位运算符及其用法。主要内容包括:1)运算符优先级:算术>位运算>逻辑运算;2)基本位运算(&、|、^、~)的功能和示例;3)位移运算符(<<、>>)的使用方法;4)如何通过位运算实现特定位的置0/1操作。文章通过具体代码示例展示了每种运算符的实际应用场景,为后续学习数据结构和C语言项目开发奠定了基础。这是C语言基础知识的最后一节内容。
2025-08-01 18:29:44
196
原创 嵌入式第十六课!!!结构体与共用体
摘要:本文介绍了C语言中结构体的基本概念和使用方法。结构体是一种自定义数据类型,通过struct关键字定义,包含多个不同类型的成员变量。文章详细说明了结构体的声明、初始化、嵌套使用、指针传递、数组应用以及内存对齐规则。此外,还简要介绍了共用体(union)、枚举类型(enum)和typedef类型定义的相关知识,包括它们的特点和使用场景。这些复合数据类型能够有效组织和管理复杂数据,提高程序的可读性和运行效率。
2025-07-31 23:03:06
973
原创 嵌入式第十五课!!!!指针函数(续)+函数指针+二级指针+指针数组!!!
本文介绍了C语言中与指针相关的几个重要函数:1. malloc函数用于堆区动态内存分配,需注意申请失败返回NULL以及内存释放问题;2. free函数用于释放malloc分配的内存,防止内存泄漏;3. realloc函数用于重新调整已分配内存块大小;4. calloc函数以数组形式分配内存并初始化为0。文章还详细讲解了函数指针的概念和使用方法,包括回调函数应用,以及qsort标准库函数的使用示例。最后介绍了二级指针、指针数组的概念和标准主函数的参数形式。文中通过代码示例和比喻,帮助理解这些指针操作的关键要点
2025-07-30 20:21:54
1148
原创 嵌入式第十四课!!!指针在字符数组的应用与数组指针
本文主要讲解了字符数组指针作为函数参数的应用及注意事项。首先介绍了Strcpy函数的使用,强调字符串常量不可修改的特性。接着讲解了const修饰符的作用和指针运算限制,并介绍了万能指针void*的应用。文章详细说明了多种字符串处理函数(如Strcat、Strcmp、Strncpy等)的实现原理和使用方法,以及它们在二维数组中的应用。最后讲解了指针函数的定义和注意事项,特别强调了返回局部变量地址的危险性。通过多个实例展示了如何正确使用指针处理字符串和数组操作。
2025-07-29 19:31:42
998
原创 嵌入式第十三课!!!指针(续)!!!
本文介绍了C语言中指针与数组操作的核心知识。主要内容包括:指针运算规则(加减n相当于移动n*基类型字节)、数组与指针关系(数组名即首元素地址)、常见数组操作(打印、求和、逆序、排序、二分查找等),以及使用指针作为迭代器的技巧(如快速排序qSort实现)。特别强调了空指针判断、指针运算限制(不能相加但能相减)和字符数组指针操作。通过多个代码示例展示了指针在数组处理中的灵活应用,同时提醒注意野指针风险和递归时的参数传递问题。
2025-07-28 20:05:45
739
原创 嵌入式第十二课!!!预处理命令与指针!!!!
本文介绍了C语言预处理命令的三种主要应用:宏定义、文件包含和条件编译。宏定义部分详细说明了无参宏和带参宏的语法及使用注意事项,强调宏名应大写、不加分号,表达式需加括号避免优先级问题。文件包含部分对比了本地文件与系统头文件的包含方式,并展示头文件的实际应用。条件编译部分讲解#ifdef和#ifndef的用法,说明其在调试和防止重复包含中的作用。此外,文中还简单提及指针的基础概念和操作,包括指针定义、内存访问方式及地址运算符的使用规则。预处理命令能有效提升代码复用性和灵活性,合理使用可优化程序结构。
2025-07-27 23:39:03
522
原创 嵌入式第十一课!!!函数参数补充以及标识符的作用域和可见性
本文主要介绍了二维数组作为函数参数的传递规则和标识符的作用域与生存期。在二维数组传参时,需同时传递数组名和行数,列数必须固定。作用域分为局部和全局两种:局部作用域变量仅限内部访问,全局作用域变量可全局访问。生存期包括静态(程序运行全程)和动态(作用域内有效)。存储类别涵盖auto、register(建议寄存器存储)、static(保持值不变)和extern(引用外部变量)四种类型。文章还强调了标识符的可见性规则,包括定义顺序、同名标识符处理等注意事项。
2025-07-25 20:27:44
912
原创 嵌入式第十课!!!函数调用详解(底层逻辑+递归+数组参数)
本文介绍了C语言中函数调用的参数传递机制。主要内容包括:1) 值传递的原理,即形参修改不影响实参;2) 指针传递实现参数修改的方法;3) 函数调用时参数从右向左压栈的机制;4) 递归调用的实现及注意事项;5) 数组作为函数参数时的地址传递特性。通过多个代码示例详细说明了不同传递方式的特点、函数调用时的内存分配机制,以及递归和数组参数的使用方法。
2025-07-24 19:42:08
988
原创 嵌入式第九课!二维数组与函数!!!
本文系统介绍了二维数组与函数在C语言中的使用。对于二维数组,详细讲解了其定义、引用、初始化方法,以及通过sizeof计算行列数的技巧,并比较了二维数组与指针的关系。在函数部分,阐述了无参函数和有参函数的定义方式、调用规则及注意事项,包括返回值处理、参数传递等关键点。通过求二维数组元素和、判断最大字符串等实例演示了二维数组的实际应用,并以闰年判断程序为例展示了函数的定义与调用过程。最后强调了编程规范、错误检查(如assert函数使用)及常见问题的解决方法。
2025-07-23 20:16:45
1271
原创 嵌入式第八课!二分法查找与字符数组!
本文介绍了C语言中字符数组的相关操作。主要内容包括:1)字符数组的定义与初始化,强调字符串末尾的'\0'结束符;2)字符数组处理函数如puts()、gets()、fgets()等的使用方法及注意事项;3)字符串长度计算函数strlen()及其实现原理;4)字符串拷贝函数strcpy()和连接函数strcat()的实现逻辑;5)字符串比较函数strcmp()的工作原理及使用场景。文中通过代码示例详细说明了这些函数的底层实现机制,如遍历比较、数组越界处理等,并比较了不同函数的安全性差异。文章最后还解释了为什么不
2025-07-22 19:23:24
969
原创 嵌入式第七课!难度爆表的——C语言数组!!
本文介绍了C语言中数组的基本概念、性质和操作方法。主要内容包括:1)数组的三大特性(单一性、连续性、有序性);2)一维数组的定义、引用和初始化规则;3)数组元素的访问方式及常见错误(如越界);4)四种典型数组排序算法(逆序、选择排序、冒泡排序和插入排序)的实现代码及运行示例。文章通过具体代码演示了各种排序算法的实现过程,并提醒读者注意数组使用中的常见问题。
2025-07-21 21:16:32
580
原创 嵌入式第六课!循环控制!!!
这篇文章介绍了编程中的循环控制结构及相关概念。首先补充了条件运算符的使用方法,然后详细讲解了循环结构的注意事项,包括变量初始化、执行条件和结束标志等。文章依次介绍了goto循环、while循环、do...while循环和for循环的语法特点及使用场景,并比较了break和continue语句的区别。最后通过打印特定三位数和寻找素数两个实例,演示了循环嵌套的实际应用。文章强调编程规范,如循环体使用花括号、避免无限循环等,并提供了具体的代码示例和运行结果。
2025-07-19 19:45:13
991
原创 嵌入式第五课!选择结构程序设计
摘要:本文详细讲解了C语言选择结构程序设计,重点补充了scanf函数的使用技巧(返回值判断和缓冲区处理),分析了关系运算符和逻辑表达式的使用要点(包括优先级和短路特性)。系统介绍了if语句的三种格式及嵌套使用,强调了大括号规范和分号注意事项。同时讲解了switch语句的语法结构、break作用和合并规则。最后提到用return退出函数的方法,为选择结构程序设计提供了全面的指导。文章内容详实,涵盖了选择程序设计的核心知识点。
2025-07-18 21:29:40
910
原创 嵌入式第四课!C语言基本程序设计与数据的输入输出
摘要:本文介绍了C语言程序设计基础,重点讲解逗号运算符的优先级特性,以及C语言的5类执行语句(控制语句、函数调用语句、表达式语句、空语句和复合语句)。详细说明了输入输出函数的使用方法,包括printf/scanf、putchar/getchar等函数的具体用法和格式控制符(如%d、%f、%s等)的差异及注意事项。特别强调了scanf函数输入时的格式要求和地址运算符&的使用,以及不同类型数据对应的格式控制符选择。
2025-07-17 19:45:25
961
原创 嵌入式学习第三课!运算符、各类数据的混合运算以及赋值
鉴于详细的表格,此处对于转义字符不再多加赘述,只强调一些容易误会其含义的字符。\t ,在使用这个字符的时候,会发现会与前面的字符加起来。当前面没有字符的时候,则前面会空出8个字符。\b,左移一位,后面的字符会到其原字符。\x,后+数字,会输出字符。
2025-07-16 20:20:34
807
原创 嵌入式第二课!C语言数据的类别与存储分析
本文介绍了计算机存储的基本原理和数据类型分类。存储系统由RAM(临时存储)和ROM(永久存储)组成,RAM读写速度快但断电数据丢失,ROM则相反。数据分为常量和变量,变量命名需遵循特定规则。整型数据包含4种类型(short/int/long/longlong),各有符号和无符号版本,存储方式分大端和小端,负数用补码存储。浮点型数据分为float和double,采用科学计数法存储(符号位+阶码+尾数)。字符型数据用单引号表示,分为char和unsigned char。文章最后区分了'1'、1和"1&
2025-07-15 19:53:57
387
原创 嵌入式学习第一课!正确认识基本框架以及学习基本Linux指令
本文分享了嵌入式开发的学习路径,从基础到高阶分为四个层次:底层C语言和数据结构是核心基础;中层包括裸机驱动和Linux驱动开发;上层是Linux系统编程;补充层则涉及C++的复杂系统开发。同时介绍了Linux基础操作指令,如ls、cd、mkdir等,为后续嵌入式开发打下环境基础。文章通过清晰的层次划分,为初学者提供了系统化的嵌入式学习指南,强调从硬件操作到系统调用的完整知识体系构建。
2025-07-14 22:03:32
743
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人