自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构5-哈希表

本文介绍了两种常见的数据结构与算法:哈希表和排序算法。哈希表部分详细讲解了其基本概念(哈希算法、哈希碰撞)和实现过程,包括创建、插入、遍历、查找和销毁等操作,通过键值映射实现O(1)时间复杂度的快速存取。排序算法部分则概述了冒泡排序、选择排序、插入排序、希尔排序和快速排序的原理及时间复杂度特性,其中快速排序和希尔排序的时间复杂度最优为O(nlogn),同时还介绍了二分查找算法。全文通过理论分析和代码示例相结合的方式,系统性地阐述了这些常用数据结构和算法的核心要点。

2025-08-08 18:37:54 500

原创 数据结构4-二叉树

摘要:本文系统介绍了二叉树的基本概念和操作。主要内容包括:1)二叉树的基本概念,包括节点类型(根节点、分支节点、叶子节点)、树的高度/深度/层数定义;2)完全二叉树和满二叉树的特性及区别;3)二叉树的两种遍历方式:深度优先(前序、中序、后序)和广度优先(层序)遍历的递归实现;4)完全二叉树的创建、遍历和销毁操作;5)非完全二叉树的创建及高度计算。文章通过代码示例详细展示了二叉树的各种操作实现方法,为理解二叉树数据结构提供了完整的技术参考。

2025-08-08 13:40:47 403

原创 数据结构4-栈、队列

本文系统介绍了栈和队列两种基础数据结构。栈采用"先进后出"原则,分为顺序栈和链式栈,详细说明了压栈、出栈等基本操作及其实现方法。队列遵循"先进先出"规则,同样分为顺序队列和链式队列,重点讲解了循环队列的判满条件(牺牲一个存储空间)和操作实现。最后通过编程练习展示了如何用链式栈(需两次压栈)和链式队列(直接实现)来完成输入输出顺序一致的功能,提供了完整的代码实现方案。文章内容涵盖数据结构基本概念、分类及具体实现,具有较强的实用性。

2025-08-07 13:06:27 1020

原创 数据结构3-双向链表、循环链表

本文详细介绍了三种链表结构的实现:双向链表、循环链表和内核链表。主要内容包括:1. 双向链表的节点定义、创建、头插/尾插法、遍历、查找、修改、删除和销毁操作的C语言实现;2. 循环链表的特殊处理(首尾相连)及各操作的实现差异;3. 内核链表的特点(节点嵌入数据结构)及其与传统链表的区别。通过代码示例和操作步骤说明,系统讲解了每种链表的基本操作原理和实现要点,包括指针处理、内存管理等关键技术细节。

2025-08-05 19:37:05 879

原创 数据结构2-单向链表

本文详细介绍了链表的11种常见操作实现方法:1. 链表元素查找(遍历查找)2. 链表节点修改(遍历修改)3. 尾插法插入节点4. 链表销毁(释放所有节点)5. 查找中间节点(快慢指针法)6. 查找倒数第k个节点7. 删除未知头节点的中间节点(数据覆盖法)8. 链表倒置(头插法)9. 链表冒泡排序10. 链表选择排序11. 判断链表是否有环及环相关操作(快慢指针法)。每种操作均包含步骤说明和代码实现,涵盖链表的基础操作与高级应用。

2025-08-04 20:12:38 986

原创 数据结构1-概要、单向链表

本文系统介绍了数据结构中的链表实现。首先概述数据结构的基本概念,包括时间复杂度、空间复杂度等核心指标,以及数据结构的主要分类。重点讲解了链表的特点、分类及实现方法,详细剖析了单向链表的节点定义、创建、头插法、遍历和删除等关键操作,并提供了完整的C语言代码实现。文章还通过对比顺序链表与链表的优缺点,突出链表在动态内存管理方面的优势。最后给出链表操作的实践练习建议,包括多文件编程的实现方法。全文内容丰富,代码示例详实,为学习链表这一重要数据结构提供了清晰的指导框架。

2025-08-02 19:04:09 1194

原创 C语言15-构造数据类型、位运算符、内存管理

本文摘要:文章系统介绍了C语言中结构体、共用体、枚举和位运算等核心概念。重点讲解了结构体的定义、初始化、内存对齐规则及传参方式;对比了共用体与结构体的存储差异;阐述了枚举类型的特性及位运算符的使用场景。同时涵盖了堆区内存管理、内存泄漏等关键问题,通过示例代码演示了各种数据结构的实际应用,为C语言开发者提供了全面的参考指南。

2025-07-30 19:25:02 726

原创 C语言14-指针4-二维数组传参、指针数组传参、viod*指针

摘要:本文介绍了二维数组和指针数组的传参方法。对于二维整型数组,可通过指针形式传递并操作(如int (p)[3]);字符型二维数组类似,使用char (p)[32]形式。指针数组传参需用二级指针char。void*指针可保存任意类型地址,无需强制转换即可赋给特定类型指针,常用于统一函数参数和返回值类型。文中提供了数组接收、打印的示例代码。

2025-07-29 18:00:04 534

原创 C语言13-指针3-函数指针、二级指针、指针数组、数组指针、

本文介绍了四种指针类型及其应用:1)函数指针,存储函数地址用于动态调用;2)二级指针,指向指针的指针,用于修改外部指针变量或指针数组传参;3)指针数组,元素为指针的数组,用于高效操作字符串数组;4)数组指针,指向整个数组的指针,处理多维数组时维护类型信息。这些指针类型在C语言中分别实现函数回调、参数传递、字符串操作和多维数组处理等功能,通过地址间接访问提升程序灵活性。文末提供了各类指针的声明语法和使用示例。

2025-07-28 20:36:14 694

原创 习题之我与指针函数的弯弯绕绕

本文讨论了通过指针函数封装实现strcpy功能的方法。代码实现包含纯享版和带注解版,重点分析了指针函数嵌套时的常见错误和注意事项:1)需要保存初始指针位置,避免因指针自增导致返回错误地址;2)详细解释了嵌套指针函数的参数传递过程,展示了"luck!"如何通过两次复制传递到最终目标dst。文章通过具体代码示例,对比了字符串复制与倒置操作中指针处理的差异,强调了指针操作时保持首地址正确性的重要性。

2025-07-28 16:25:22 630

原创 函数掉进的坑--函数竟然进行了两遍

在实现mystrcat函数模拟strcat功能时,由于在printf中调用了两次mystrcat(str,dst),导致字符串被重复拼接。因此需要注意:函数名加参数的形式(如mystrcat(str,dst))本身就是一次完整调用,调用几次就执行几次函数操作。我以为将mystrcat函数写在printf只是打印这个函数返回的值,不曾想这样就算调用了函数。当我们写出mystrcat(str,dst)就是运行该函数体。所以mystrcat函数体运行了两遍。:封装mystrcat函数实现strcat功能。

2025-07-28 00:41:25 154

原创 C语言12-指针2-指针与数组的关系

本文主要探讨指针与数组的关系及编程应用。数组名本质是指向首元素的指针常量,但在sizeof和&运算时表现特殊。数组可通过指针方式访问元素,函数传参时可采用数组或指针形式。字符串处理中,字符数组和指针的应用需要注意const修饰符的不同作用:const int*p限制修改指向内容,int *const p限制指针变量本身。此外还介绍了指针函数(返回指针的函数)和函数指针(指向函数的指针)的概念与用法,并提供了数组输入、排序、输出等实用函数示例。这些知识点是C语言中指针与数组关系的核心内容。

2025-07-26 18:37:25 822

原创 C语言11-指针1-基础知识

本文概述了指针的核心概念与应用。主要内容包括:指针的优点(高效访问内存、操作硬件)、基本概念(地址与指针变量)、注意事项(野指针、内存泄漏)。介绍了指针运算符(&取地址,*解引用)和指针变量的定义形式(空指针NULL)。详细说明了指针算术运算的特性(偏移量由数据类型决定)以及指针作为函数参数的两种传递方式(值传递和地址传递)。文中通过具体示例展示了指针的操作方法,并强调了使用指针时的关键注意事项。

2025-07-25 19:06:56 856

原创 C语言10-预处理命令

本文介绍了C语言预处理命令的三大类:头文件、宏定义和条件编译。头文件部分解释了#include指令的两种形式及其查找路径差异,说明了头文件内容组成和工程结构组织方式。宏定义部分分别讲解了不带参数和带参数的宏定义语法及注意事项,特别强调宏函数的使用规范。条件编译部分列举了#if/#elif/#else/#endif等指令的用法。作者通过系统整理这些知识点,体会到编程学习需要持续练习和总结,并分享了自己从零基础到能独立解决问题的成长过程,强调多练多思的重要性。全文既包含技术要点又融入学习心得,展现了编程学习的阶

2025-07-24 17:28:59 666

原创 C语言10-函数2-extern、函数传参

摘要:本文介绍了extern关键字的用法,用于声明外部变量,便于在多文件编程中共享变量。同时讲解了函数传参的两种方式:值传递(不影响实参)和数组传递(操作同一数组)。重点阐述了整型数组的两种传参形式(固定长度和动态长度),并通过三个实例演示了数组操作(打印极值、冒泡排序、倒置)。最后说明字符数组传参无需长度参数(自动识别'\0'),并给出计算字符串长度的练习。文章强调动态长度数组传参的实用性和灵活性。

2025-07-24 16:00:33 521

原创 C语言9-函数1

本文系统介绍了函数编程的核心概念,主要包括:1)函数的定义、调用和声明三种形式;2)变量的作用域(局部/全局变量)和生存周期;3)四种存储类型(auto/register/extern/static)及其内存分配机制;4)函数参数传递规则及递归函数的使用要点。重点解析了栈区、堆区、数据区和文本段的内存分布特点,通过闰年判断和四则运算实例演示函数封装方法,并以汉诺塔问题为例说明递归函数的应用逻辑。全文从理论到实践,系统阐述了函数编程的关键知识点。

2025-07-23 18:54:09 1114

原创 C语言8-数组3-一维字符型数组、二维字符型数组

本文介绍了C语言中字符数组和字符串处理的相关知识。主要内容包括:一维字符数组的常用操作(strcpy、strcat、strcmp)及其注意事项;二维字符数组的定义、初始化与遍历方法;以及通过编程练习实现字符串长度计算(strlen)、字符串拷贝(strcpy)和字符串拼接(strcat)的功能。文中提供了详细代码示例,强调操作时要注意数组边界检查,避免越界访问。这些基础操作是C语言字符串处理的核心内容,对理解更复杂的字符串算法具有重要意义。

2025-07-22 19:57:49 667

原创 C语言7-数组2-冒泡、选择排序、二维整型数组、一维字符型数组

本文介绍了数组排序算法和数组类型的基础知识。在排序算法部分,详细讲解了冒泡排序和选择排序的工作原理与实现方式:冒泡排序通过相邻元素比较交换实现排序,而选择排序通过每次选择最小元素交换位置实现排序。在数组类型部分,阐述了二维整型数组的存储形式、初始化方法及本质特征,以及一维字符型数组的初始化、元素访问、字符串打印和输入输出操作。特别说明了strlen和sizeof在字符串处理中的区别,并提供了相关示例代码。全文涵盖了数组操作的基础概念和实用技巧。

2025-07-21 18:02:12 827

原创 C语言6-数组1-一维整型数组

本文介绍了数组的基本概念和使用方法。数组是相同类型元素的有限集合,可分为一维、二维和多维数组,包括整型和字符型。重点讲解了一维整型数组的定义、访问方式、初始化和存储特点,强调元素下标从0开始且不能越界。文章提供了三个实践练习:查找最小值、查找最大值及其下标、数组元素倒置,并详细说明了倒置操作的交换规律。通过示例代码和注意事项,帮助读者掌握数组的基本操作和常见应用场景。

2025-07-19 23:33:13 764

原创 C语言5-流程控制2

本文介绍了循环结构及其辅助控制语句的使用。重点解析了双层for循环的工作原理,通过九九乘法表示例说明循环嵌套的执行流程,并分享了调试过程中的心得体会(如格式调整、变量理解等)。同时简要介绍了goto循环的实现方式,以及break、continue、return三种辅助控制语句的功能差异和使用方法。文章以实际代码为例,强调理解循环控制逻辑的重要性,并建议通过printf调试来直观理解程序执行过程。

2025-07-19 15:29:52 983

原创 C 语言4-流程控制

本文介绍了程序设计的三大流程结构(顺序、分支、循环)及其实现方法。重点讲解了分支结构中的if语句(简单分支、阶梯分支)和switch语句(基础结构、嵌套结构),以及循环结构中的while、do-while和for循环。详细说明了逻辑表达式中的关系运算符和逻辑运算符的使用,并提供了三目运算符的示例。通过"分数等级判断"、"0-100求和"和"鸡兔同笼"等实例展示了这些结构的实际应用。文章还强调了if/else的使用注意事项和循环控制语句的特性。

2025-07-18 19:18:04 578

原创 C语言3-输入输出函数

C语言输入输出函数详解 本文介绍了C语言中常用的输入输出函数及其使用方法。主要内容包括:1)单字符输入输出函数putchar和getchar;2)格式化输入输出函数printf和scanf,详细说明了各种格式控制符的使用方法及转义字符的含义;3)字符串输入输出函数puts和gets的特性。文中通过具体示例演示了这些函数的使用场景,如打印变量值、接收用户输入并进行计算等。特别强调了scanf函数中地址运算符&的使用注意事项,以及不同函数在处理空格和换行符时的区别。

2025-07-17 18:26:37 654

原创 C语言2-表达式、运算符

1.定义:表达式是由一个或者多个运算符连接变量或常量组成的式子2. 特点:表达式一定有值、类型3. 混合运算数据类型:① C语言中相同数据类型运算得到的结果就为该数据类型② C语言中不同数据类型运算需要将数据类型转换为同一种类型再进行运算和处理;不同类型运算时需要将低精度类型转换为高精度类型③转换标准:- 浮点类型精度 > 整数类型精度- 相同类型所占空间越大精度范围越高- 整数类型无符号精度 > 有符号精度- char和short进行数据运算和数据处理时会统一转换为int类型。

2025-07-16 17:54:40 439

原创 C语言1-基础知识、数据类型、常量和变量

【嵌入式学习笔记:C语言基础数据类型】本文介绍了嵌入式开发中C语言基础数据类型的学习内容:1. 计算机组成原理:CPU、内存与外存的交互关系;2. 数据单位换算:bit、byte到TB的进制转换;3. 基本数据类型分类:包括整数型(有/无符号)、浮点型(float/double)、字符型(char)、布尔型(bool)和void类型;4. 变量与常量定义规则:命名规范、存储特性及各类常量表示方法。重点讲解了补码存储原理、ASCII编码、浮点数精度等核心概念,为嵌入式开发奠定C语言基础。(150字)

2025-07-15 20:22:27 506

原创 Linux基础

摘要:本文记录了嵌入式学习的第一天内容。主要包括:1.制定了嵌入式学习路线,涵盖Linux、C语言、数据结构、软硬件开发等;2.学习了Linux基础命令,如文件操作、目录管理、路径切换等;3.实践了Linux下C语言开发流程,包括vim编辑器和gcc编译器使用;4.完成文件操作练习巩固知识。通过系统学习和实践操作,为后续嵌入式开发奠定了基础。

2025-07-14 21:49:16 1144 1

空空如也

空空如也

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

TA关注的人

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