- 博客(17)
- 收藏
- 关注
原创 数据结构深度剖析栈与队列:结构、边界实现与进出操作全解析
本文介绍了栈的基本概念、实现方式以及应用实例。栈是一种遵循后进先出(LIFO)原则的线性表,支持压栈和出栈操作。文章对比了数组和链表两种实现方式,指出数组实现更优。通过C语言代码展示了栈的初始化、入栈、出栈等核心操作,并详细说明了栈顶指针的两种不同处理方式。最后以有效的括号问题为例,展示了栈在实际算法中的应用,通过栈结构可以高效解决括号匹配问题。代码实现部分包含了完整的栈操作函数和测试用例。
2026-05-17 20:23:28
11
5
原创 数据结构深度剖析链表全集:结构实现、分类与底层原理全解析
摘要:本文介绍了链表的基本概念和单链表的实现方法。链表是一种非连续存储结构,通过指针链接实现逻辑顺序。每个节点包含数据和指向下一节点的指针。文章详细讲解了单链表的各项操作实现,包括节点创建、打印、头插尾插、头删尾删、查找、指定位置插入删除等,并提供了完整的C语言实现代码。链表相比顺序表具有动态内存分配的优势,但访问效率较低。
2026-05-13 18:56:41
484
8
原创 数据结构深度剖析顺序表:结构、扩容与增删查改全解析
顺序表是一种线性表数据结构,采用数组实现存储。它分为静态和动态两种:静态顺序表使用定长数组,容量固定;动态顺序表通过指针动态分配内存,支持扩容。动态顺序表通过结构体封装数组指针、当前元素个数和总容量,实现增删改查等操作。关键操作包括初始化、销毁、检查容量、头尾插入/删除、指定位置操作等。动态顺序表相比静态版本更灵活,能按需分配内存,适合处理大批量数据。实现时需注意边界条件判断和内存管理,通过断言确保操作合法性。
2026-05-10 19:12:39
370
4
原创 C语言入门小项目:手把手教你写扫雷
本教程详细介绍了如何使用C语言从零开始实现一个完整的控制台版扫雷游戏。项目采用两个11×11的二维数组(包含边界)分别存储雷区信息和显示信息,通过模块化设计实现了初始化、布雷、用户交互、递归展开空白区域等核心功能。
2026-04-16 20:21:33
474
24
原创 从原理到实践:彻底搞懂 C 语言动态内存管理
摘要: 本文介绍了C语言动态内存管理的必要性及使用方法。静态内存分配存在空间固定、无法调整的缺陷,动态内存管理通过malloc、calloc、realloc和free函数实现灵活的内存申请与释放。malloc分配未初始化的内存,calloc分配并清零内存,realloc可调整已分配内存大小,free用于释放内存。文章还总结了常见错误,如空指针解引用和越界访问,并强调了检查返回值、避免内存泄漏的重要性。正确使用这些函数能有效管理程序运行时内存需求。
2026-04-09 17:20:09
708
17
原创 C语言自定义类型:联合和枚举
本文介绍了C语言中的联合体(共用体)和枚举类型。联合体是一种特殊的数据类型,其特点是所有成员共享同一块内存空间,大小等于最大成员的大小。文章通过代码示例展示了联合体的声明、特点、与结构体的对比以及大小计算规则。枚举类型用于定义一组命名的常量,可提高代码可读性。文中详细说明了枚举的声明方式、默认值规则,并给出了计算器菜单选项的实用案例。联合体和枚举都是C语言中重要的复合数据类型,合理使用可以优化内存利用并增强代码可维护性。
2026-04-08 18:44:29
319
5
原创 C语言自定义类型:结构体详解
本文介绍了C语言结构体的基本概念和使用方法。主要内容包括:1) 结构体的声明、变量创建和初始化方式;2) 结构体的特殊声明(匿名结构体)和自引用(用于构建链表等数据结构);3) 结构体内存对齐规则及其原因(平台兼容性和性能优化);4) 如何修改默认对齐数;5) 结构体传参的两种方式(值传递和地址传递)。重点分析了内存对齐的计算规则及其空间换时间的特性,并给出了优化结构体空间利用的建议。文章通过多个代码示例详细说明了结构体的各种用法和注意事项。
2026-04-05 15:16:41
571
5
原创 C语言内存函数
本文介绍了C语言中常用的内存操作函数及其实现原理,包括memcpy、memmove、memset和memcmp。memcpy用于内存块拷贝,但不能处理重叠内存;memmove则能处理重叠内存,通过前向或后向拷贝保证数据正确性。memset用于设置内存值,memcmp用于比较内存块。文章还解释了整数在内存中的存储方式,包括原码、反码和补码的转换规则。通过代码示例和模拟实现,详细展示了这些函数的使用方法和内部工作原理,为理解内存操作提供了实用指导。
2026-03-26 14:35:05
609
11
原创 C语言字符函数和字符串函数
C语言字符串处理函数摘要 本文介绍了C语言中常用的字符串处理函数,主要包括: 字符分类函数:包含在<ctype.h>中,如islower()、isdigit()等,用于判断字符类型。 字符转换函数:tolower()和toupper()用于大小写字母转换。 strlen函数:计算字符串长度,需要注意其返回值为无符号数。提供了三种模拟实现方法:计数器法、递归法和指针相减法。 strcpy函数:字符串拷贝函数,需要注意目标空间足够大且可修改。给出了模拟实现代码。 strcat函数:字符串连接函数。
2026-03-25 22:11:02
706
14
原创 c语言灵魂之指针(5)
摘要:本文介绍了C语言中的qsort函数及其应用。qsort是<stdlib.h>中的通用排序函数,可处理任意类型数据,通过用户自定义比较函数实现排序。文章首先回顾冒泡排序的局限性,然后详细解析qsort的四个参数:待排序数组指针、元素个数、元素大小和比较函数指针。通过整型数组和结构体数组的排序示例,演示了qsort的使用方法。最后,文章展示了如何用冒泡排序算法模拟实现qsort的功能,使其能处理任意数据类型。
2026-02-27 10:46:08
701
3
原创 c语言灵魂之指针(4)
本文介绍了C语言中三种重要的指针类型:字符指针、数组指针和函数指针。字符指针可以指向单个字符或字符串,但要注意字符串常量的只读特性;数组指针指向整个数组,与指针数组有本质区别;函数指针存储函数地址,可用于间接调用函数。文章通过代码示例详细说明了各种指针的声明、初始化和使用方法,并特别讲解了二维数组传参的本质是传递第一行地址。这些指针概念是C语言编程的核心内容,掌握它们对理解复杂数据结构和回调机制至关重要。
2026-02-22 14:49:35
603
9
原创 c语言灵魂之指针(3)
本文探讨了C语言中数组与指针的关系及其应用。首先分析了数组名的本质,指出数组名通常表示首元素地址,但在sizeof和&操作时例外。接着展示了如何用指针访问数组元素,并验证了p[i]与*(p+i)的等价性。然后深入解析了一维数组传参的本质,说明形参实际接收的是指针而非整个数组。最后介绍了冒泡排序算法,包括基本实现和优化版本(通过标志位提前终止排序)。文章通过代码示例和内存分析,揭示了数组与指针的内在联系,为理解C语言的数据访问机制提供了实用指导。
2026-02-12 13:45:00
650
原创 c语言灵魂之指针(2)
本文探讨了C语言中指针的关键概念与应用。首先分析了const修饰指针的两种方式:当const位于*左侧时限制指针指向内容不可修改,位于右侧时限制指针本身不可修改。其次详细讲解了野指针的成因(未初始化、越界访问、指向已释放空间)及防范措施。随后介绍了assert断言的使用方法和注意事项。最后通过strlen函数模拟实现和变量交换示例,对比了传值调用与传址调用的区别,指出指针在函数参数传递中的重要作用。全文通过具体代码示例,系统阐述了指针的核心概念和实际应用场景。
2026-02-10 18:24:54
682
2
原创 C语言灵魂之指针(1)
本文系统介绍了C语言中指针的核心概念与应用。首先解释了内存地址与指针的关系,将内存单元编号类比为门牌号。然后详细讲解了指针变量的声明、取地址操作符(&)和解引用操作符()的使用方法,并通过示例代码展示了如何通过指针修改变量值。文章还分析了指针变量在不同平台下的大小特性,指出指针类型对解引用权限和指针运算步长的影响。最后探讨了void指针的特殊用途以及指针运算的三种形式:加减整数、指针相减和关系运算。全文通过丰富的代码示例和图示,全面阐述了指针这一C语言核心概念的基本原理和实际应用。
2026-02-09 12:41:15
587
2
原创 C语言初阶(二)操作符详解下
本文详细讲解了C语言中的移位操作符和位操作符。移位操作符包括左移(<<)和右移(>>),左移规则是左边丢弃右边补0,右移分为逻辑右移和算术右移。位操作符包括按位与(&)、或(|)、异或(^)和取反(~),并给出了不使用临时变量交换两个整数的三种方法,重点推荐使用异或运算的方法。此外还介绍了求整数二进制中1的个数的三种算法,最优的是n&(n-1)方法。最后讲解了单目操作符、逗号表达式以及下标访问[]和函数调用()操作符的使用方法。文章通过大量代码示例详细说明了各种操作符
2026-01-30 16:35:57
850
10
原创 C语言初阶(二)操作符详解上
摘要:本文介绍了C语言中常见的操作符分类及使用方法。主要包括算术操作符(+、-、*、/、%)、赋值操作符(包括连续赋值和复合赋值)、单目操作符(++、--、+、-)以及强制类型转换。详细讲解了整数除法与浮点数除法的区别,前置/后置自增自减的区别,并通过代码示例演示了各种操作符的具体应用。文章强调编写简单易懂代码的重要性,并预告将继续介绍其他类型的操作符。
2026-01-24 22:01:14
842
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅