自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 类和对象(下)

本文深入讲解了C++类和对象的高级特性,包括初始化列表的使用规则和注意事项,explicit关键字防止隐式类型转换,static静态成员的定义和应用场景,友元函数和友元类的特性及使用限制,内部类的定义及其作为外部类友元的特性,以及匿名对象的生命周期和使用方法。这些知识点是C++面向对象编程的核心内容,对理解类的高级用法至关重要,尤其适合准备面试和考试时系统复习使用。

2026-05-26 18:46:09 722 46

原创 类和对象(中)

本文系统讲解了C++类和对象的6个默认成员函数,重点剖析了构造函数、析构函数、拷贝构造函数和赋值运算符重载四大核心功能。通过日期类Date的完整实现,详细演示了浅拷贝与深拷贝的区别、const成员函数的使用场景以及运算符重载的规范写法。文章由浅入深地介绍了默认构造函数的特征、析构函数的资源释放时机、拷贝构造的深拷贝实现要点,以及赋值重载的自赋值检查等关键知识点,为C++面向对象编程提供了实用指导。

2026-05-26 18:44:36 780 34

原创 类和对象(上)

本文详细讲解了C++中类和对象的核心概念,包括类的定义、访问限定符、类域、实例化、对象大小计算、this指针及封装特性。重点内容包括:1)类将变量和函数打包封装;2)public/private访问控制实现数据安全;3)this指针作为隐含参数区分不同对象;4)对象大小仅含成员变量,遵循内存对齐;5)封装特性带来的编程规范与安全性提升。文章通过栈的实现对比C与C++差异,并指出常见易错点,帮助读者扎实掌握面向对象编程基础。

2026-05-18 23:31:30 689 15

原创 初入C++

本文介绍了C++编程语言的基础知识,重点讲解了C++与C语言的区别以及C++特有的语法特性。主要内容包括:C++的第一个程序写法、命名空间的定义与使用、输入输出流(cin/cout)的使用、缺省参数、函数重载、引用(&)的概念与应用、内联函数(inline)以及nullptr关键字。文章特别强调了C++中容易出错的知识点,如引用必须初始化、缺省参数必须从右往左连续缺省、函数重载不能仅靠返回值不同等。这些内容为C++初学者提供了清晰的学习路径,帮助读者避免常见错误,掌握C++编程的核心概念。

2026-05-18 00:11:27 1011 22

原创 排序算法详解

本文全面介绍了数据结构中的八大排序算法,包括插入排序(直接插入、希尔)、选择排序(直接选择、堆)、交换排序(冒泡、快速)、归并排序和非比较排序(计数)。每种算法详细讲解了核心思想、代码实现、时间复杂度、稳定性及适用场景。重点分析了快速排序的分治思想和堆排序的完全二叉树特性,并提供了优化建议。文章强调排序算法在开发、面试和系统设计中的重要性,适合不同基础的读者系统学习排序知识。

2026-05-17 23:54:56 1644 8

原创 二叉树(LeetCode)

刷题ing

2026-05-13 15:22:18 309 26

原创 二叉树详解

本文系统介绍了树和二叉树的基础概念、存储结构及应用。主要内容包括:1)树的基本术语与表示方法;2)二叉树的定义、特殊类型(满二叉树、完全二叉树)及性质;3)二叉树的顺序存储(堆)和链式存储实现;4)堆的核心操作(插入、删除、调整)及代码实现;5)堆排序的原理与时间复杂度分析。文章通过图示和代码示例,详细讲解了树形数据结构的关键知识点,特别是堆的实现与应用,为学习更复杂的树结构打下基础。

2026-05-13 15:22:02 2248 19

原创 我的创作纪念日(博客一周年纪念篇)

一周年啦

2026-05-11 00:03:30 240 12

原创 栈和列队(LeetCode)

刷题ing

2026-05-10 14:08:57 233 3

原创 栈和列队 --> 列队详解

本文全面介绍队列的概念、结构与链表实现,采用分文件编程完成队列初始化、入队、出队、取队头队尾、销毁等功能,附带完整代码与分步讲解。队列遵循先进先出原则,头尾指针管理效率高,适用于任务调度、消息队列、广度优先搜索等场景,同时给出总结与易错点

2026-05-10 13:55:18 1382 13

原创 栈和列队 --> 栈详解

本文详细讲解栈的概念、结构与动态数组实现,采用分文件编程完成栈的初始化、入栈、出栈、取栈顶、销毁等核心接口,并附完整可运行代码与逐功能解析。栈遵循后进先出原则,尾插尾删效率高,适合函数调用、括号匹配等场景

2026-05-10 13:54:53 1491 9

原创 单链表的应用 --> 简单通讯录的实现

本文基于单链表实现了一个简易通讯录系统,主要功能包括联系人信息的增删查改、显示及数据持久化存储。系统采用模块化设计,分为单链表底层(SList.h/c)、通讯录业务逻辑(contact.h/c)和测试菜单(test.c)三部分。核心功能通过单链表操作实现,支持100人信息存储,包含姓名、性别、年龄等字段,程序退出时数据会保存至文件。关键实现包括:初始化加载历史数据、按姓名查找节点、链表节点操作等,相比顺序表实现更灵活高效。

2026-05-09 00:27:16 1465 16

原创 单链表Ⅲ(LeetCode)

刷题ing

2026-05-09 00:26:47 577 27

原创 单链表Ⅱ(LeetCode)

刷题ing

2026-05-08 01:53:53 365 24

原创 单链表Ⅰ(LeetCode)

刷题ing

2026-05-08 01:53:37 243 11

原创 单链表进阶版 -->双向链表

本文讲解带头双向循环链表的结构与完整实现,包含节点定义、初始化、增删查改、销毁等接口,并通过分文件编程完成封装与测试。该结构支持双向遍历,任意位置插入删除效率为 O (1),解决单链表短板。文末对比顺序表与链表,明确适用场景,是掌握实用数据结构的核心内容

2026-05-07 00:10:32 2222 15

原创 单链表 -->增、删、查、改等详细操作

本文详细介绍单链表的概念、结构及完整实现,采用分文件编程完成头文件声明、源文件实现与测试验证。内容包括节点创建、打印、头尾插删、指定位置插入删除、查找、销毁等功能,并对每个接口进行详细分析。单链表解决了顺序表的缺陷,头插 / 头删效率达 O (1),适合频繁插入删除的场景。代码规范、逻辑清晰,是掌握链式结构的核心内容。

2026-05-07 00:08:37 1824 20

原创 顺序表的应用 --> 简单通讯录的实现

本文介绍了一个基于动态顺序表实现的简易通讯录系统。系统采用模块化设计,包含顺序表底层(SeqList)、通讯录业务逻辑(contact)和测试菜单(test)三部分。通讯录支持添加、删除、查找、修改、显示联系人等核心功能,并能通过文件操作实现数据持久化。系统初始化时自动加载历史数据,退出时保存当前数据至文件,确保信息不丢失。关键技术点包括结构体存储联系人信息、动态内存管理实现顺序表扩容、文件读写操作等。代码结构清晰,功能完整,可作为C语言数据结构学习的实践案例。

2026-05-06 16:45:05 1618 27

原创 顺序表(LeetCode)

刷题ing

2026-05-06 16:44:35 488 13

原创 顺序表 -->增、删、查、改等详细操作

本文系统介绍动态顺序表的实现与应用,以分文件编程方式完成头文件声明、源文件实现与测试验证。内容包含动态顺序表的结构定义、初始化、销毁、扩容检查及尾插/尾删、头插/头删、指定位置插入删除、查找等核心接口。文中明确各操作的时间复杂度,提炼常见易错点,帮助规避空指针、越界、内存泄漏等问题。通过完整可运行代码,清晰展示动态顺序表的底层逻辑,为线性表与后续数据结构学习奠定基础

2026-04-28 17:25:08 2218 38

原创 算法效率:复杂度原理解析

本文系统讲解了算法复杂度分析的核心概念与方法。主要内容包括:时间复杂度与空间复杂度的定义、大O渐进表示法的规则(保留最高阶项、去除系数、常数记O(1))、常见复杂度等级对比(从O(1)到O(N!)的性能排序),以及多个典型代码示例的复杂度分析(如双层循环O(N²)、递归O(N)等)。特别通过LeetCode旋转数组的三种解法,对比展示了不同算法在时间(O(N²)到O(N))和空间(O(1)到O(N))上的优化思路。最后强调复杂度分析是评估算法优劣的关键,能帮助开发者在编码前预判算法性能。

2026-04-28 17:24:15 1993 36

原创 编译前奏:预处理全面梳理

这篇文章全面讲解了C语言预处理的核心知识点,包括预处理符号、宏定义、条件编译等关键内容。文章首先介绍了预定义符号的使用方法,然后详细讲解了#define定义常量和宏的语法规则,重点强调了宏参数副作用带来的风险。接着对比了宏与函数的优缺点,解释了#和##运算符的特殊用法。文章还涵盖了条件编译、头文件包含规范以及常见预处理指令的使用技巧。最后总结了预处理阶段的注意事项和常见错误,如宏定义不加括号、参数副作用等问题,并提供了头文件保护的解决方案。全文内容丰富,结构清晰,适合C语言开发者系统学习预处理相关知识。

2026-04-26 16:12:05 708 33

原创 编译链接流程与底层细节

本文详细介绍了C语言程序的翻译环境和运行环境全过程。翻译环境包括预处理(展开头文件、宏定义)、编译(词法语法分析)、汇编(生成机器码)、链接(符号解析与重定位)四个关键步骤,最终将.c源代码转换为可执行文件。运行环境则描述了程序执行时的内存分配机制,包括栈存储局部变量和静态区存放全局变量。文章还特别指出了常见的理解误区,如混淆编译链接阶段、忽视预处理特性等,并提供了gcc编译指令示例。通过剖析多文件项目中extern声明的必要性,帮助读者掌握程序底层运行原理,提升多文件项目管理能力。

2026-04-26 16:10:52 522 44

原创 文件读写操作与易错点总结

本讲系统介绍C语言文件操作,围绕数据持久化核心需求,讲解文件分类、文本与二进制文件区别、fopen/fclose开关流程。重点详解fgetc/fputc、fgets/fputs、fprintf/fscanf、fread/fwrite八类顺序读写函数的原型、用法与适用场景,补充fseek/ftell/rewind随机读写、结束判定、缓冲区机制及r+、w+、a+更新模式。内容覆盖规范流程、常见错误与工程实践,适合掌握文件读写、应对笔试面试与实际开发。

2026-04-25 00:14:17 461 22

原创 动态(堆区)内存管理与内存泄漏规避

本文详细讲解C语言动态内存管理核心知识,介绍malloc、free、calloc、realloc四大函数的用法与区别,深入分析空指针解引用、越界访问、非法free、重复释放、内存泄漏等常见错误。同时讲解柔性数组的特点、使用与优势,最后清晰梳理C/C++程序内存区域划分。内容兼顾基础语法,可帮助学习者安全使用动态内存,避免常见内存问题。

2026-04-25 00:13:55 851 26

原创 自定义类型进阶:联合与枚举

本文系统讲解了C语言中的联合体(共用体)和枚举类型,涵盖声明语法、内存特性、大小计算、使用场景及实战技巧。联合体通过共享内存实现多成员互斥使用,适合节省内存和判断机器大小端;枚举类型用于列举固定取值,提升代码可读性和维护性。文章对比了联合体与结构体的区别,分析了枚举相比#define的优势,并指出常见易错点,帮助读者掌握这两种自定义类型的核心用法与底层原理。

2026-04-22 18:34:54 5869 24

原创 结构体:定义、使用与内存布局

本文系统讲解C语言结构体相关知识,涵盖结构体声明、变量创建与初始化、成员访问、内存对齐、结构体传参及位段实现。重点解析结构体内存对齐规则与计算方法,说明结构体传参优先传址的原因,并介绍位段的用法、内存分配与跨平台问题。

2026-04-22 18:34:28 5569 17

原创 内存函数:如何使用与模拟实现

本文学习C语言memcpy、memmove、memset、memcmp四大内存操作函数,详细介绍函数原型、功能、参数与返回值,结合示例演示实际使用场景,并完整给出手写模拟实现。重点说明memcpy不处理内存重叠、memmove可安全处理重叠、memset按字节赋值、memcmp逐字节比较的核心差异,同时梳理使用规范与高频易错点,帮助大家掌握底层内存操作逻辑。

2026-04-18 21:27:14 965 17

原创 字符串与字符函数:用法与模拟实现

本文学习了C语言<ctype.h>字符分类 / 转换函数与<string.h>核心字符串库函数,覆盖strlen、strcpy、strcat、strcmp、strncpy、strncat、strncmp、strstr、strtok、strerror/perror 十大常用接口。全文包含函数原型、使用规范、典型示例、手写模拟实现,重点解析\0处理规则、无符号返回值、长度限制、内存安全、字符串切割与错误信息转换等关键要点,并梳理高频易错点。

2026-04-18 21:18:04 428 4

原创 指针进阶:回调函数精髓 + qsort 实战与模拟实现

本文深入讲解C语言指针的高阶应用,聚焦**回调函数精髓、qsort库函数实战、结构体排序、qsort底层模拟实现**四大核心内容。通过底层逻辑与源码级分析,帮助读者掌握回调函数的设计思想、通用排序的实现机制,理解`void*`泛型指针用法,并能够基于冒泡思想模拟实现兼容任意数据类型的排序函数。全文以工程实践与面试考点为导向,助力读者彻底掌握指针与函数指针结合的高级用法,建立完整的泛型编程思维,夯实C语言进阶核心能力。

2026-04-16 23:48:32 576 6

原创 指针重难点:从字符指针到函数指针与转移表

本文深入讲解C语言指针的高阶应用,聚焦六大核心知识点:字符指针、数组指针、二维数组传参本质、函数指针、函数指针数组和转移表。通过底层逻辑分析,帮助读者掌握指针进阶内容,包括字符指针的常量字符串处理、数组指针与指针数组的本质区分、二维数组传参的指针形式、函数指针的定义与调用技巧,以及利用函数指针数组实现转移表来优化代码结构。这些内容不仅是理解C语言内存模型的关键,也是笔试面试与工程开发的高频考点。

2026-04-16 23:36:06 427 5

原创 指针与数组深度攻略:数组名、传参、冒泡、二级指针

本文深入探讨了C语言指针与数组的核心概念。重点解析了数组名的本质(首元素地址)及其两个例外情况(sizeof和&操作)。详细讲解了指针访问数组的原理、一维数组传参机制,并实现冒泡排序算法。进一步剖析了二级指针和指针数组的特性,展示了如何用指针数组模拟二维数组。通过代码示例和对比分析,帮助读者厘清指针与数组的关系,为C语言进阶学习奠定坚实基础。

2026-04-15 17:18:47 413 7

原创 指针必坑指南:const 修饰、野指针、assert 与传址调用

本文深入探讨C语言指针的高级用法与安全实践。首先解析const修饰指针的三种形式及其作用:修饰变量、修饰指针内容(*左边)和修饰指针变量本身(*右边)。其次剖析野指针的三大成因(未初始化、越界访问、指向释放空间)及防范措施。随后介绍assert断言在指针校验中的应用,最后通过strlen模拟实现和变量交换案例,对比传值调用与传址调用的本质差异。全文以代码示例贯穿,帮助开发者掌握指针安全操作的核心要点,提升函数参数传递的精准控制能力。

2026-04-15 14:09:11 563 3

原创 从零理解 C 指针:内存、地址、运算全梳理

本文是C语言指针系列的第一篇,系统讲解了指针的基础概念。主要内容包括:内存编址原理(内存单元编号即地址/指针);指针变量的定义与使用(取地址&和解引用*操作);指针类型的作用(决定解引用权限和步长);指针变量大小与平台相关(32位4字节/64位8字节);指针的三大核心运算(加减整数、指针相减、关系比较)。文章通过代码示例详细演示了指针的基本操作,强调理解内存-地址-指针关系的重要性,为后续深入学习指针奠定基础。适合C语言初学者从零开始系统掌握指针的核心概念。

2026-04-14 19:55:02 557 1

原创 彻底搞懂操作符:C语言表达式核心手册

本文系统介绍了C语言中的操作符及其应用。首先讲解了进制转换方法,包括二进制、八进制、十进制和十六进制之间的相互转换技巧。其次详细阐述了原码、反码和补码的概念,特别说明了计算机使用补码存储数据的原因。重点解析了位移操作符的运算规则,以及位操作符(&、|、^、~)的具体用法。此外还介绍了逗号表达式、下标访问和函数调用操作符的使用方式。最后详细讲解了结构体的定义、初始化和成员访问方法,通过学生信息的示例展示了结构体的实际应用。全文内容全面系统,涵盖了C语言中各类操作符核心知识点。

2026-04-13 22:05:43 388 1

原创 5分钟搞懂C语言递归,原来这么简单!!!

本文介绍了C语言中函数递归的概念与应用。递归是指函数调用自身来分解问题,需满足终止条件和逐步逼近条件两个必要条件。通过阶乘计算和数字逐位打印两个示例,展示了递归的实现方式及其与迭代的区别。递归代码简洁但存在栈溢出风险,迭代通过循环实现效率更高但代码可能更复杂。实际应用中应根据问题需求选择合适方法,平衡代码可读性与性能。

2026-04-12 02:17:52 389 2

原创 手把手教你用C语言开发扫雷小游戏

本文介绍了使用C语言实现简易扫雷游戏的设计思路和代码框架。游戏基于9x9棋盘,随机布置10个炸弹,通过二维数组存储数据并扩展为11x11解决边界问题。核心功能包括:初始化棋盘、随机布置炸弹、玩家排雷操作及周围炸弹数统计。代码采用模块化设计,分为头文件(game.h)声明、源文件(game.c)实现和测试文件(test.c)。排雷过程中会判断是否踩雷或统计周围炸弹数量,直到找出所有非雷区域游戏结束。该实现运用了数组、循环、函数等基础语法,适合初学者练习编程逻辑。

2026-04-08 16:58:43 543 2

原创 吃透C语言函数,代码水平直接上一个台阶

C语言函数分为库函数和自定义函数。库函数是语言提供的现成功能模块,使用前需包含对应头文件;自定义函数由程序员编写,需明确返回类型和参数。函数参数分为实参和形参,形参是实参的临时拷贝。return语句控制函数返回值,需注意类型匹配。数组可作为函数参数传递,实现批量数据处理。函数支持嵌套调用和链式访问,可将函数返回值作为另一函数的参数。函数需先声明后使用,多文件编程时通常将声明放在.h头文件,实现放在.c源文件中。合理使用函数能提高代码复用性和可维护性。

2026-04-08 01:27:51 645 3

原创 C语言数组:数据存储的核心基石

本文详细介绍了C语言中数组的基本概念、特性及操作。数组是存储相同数据类型元素的集合,具有连续存储、固定长度和单一数据类型的特点。文章涵盖了一维和二维数组的创建、初始化、类型说明及常见操作(访问、修改、遍历),并通过示例代码演示了数组的内存结构和输入输出方法。此外,还提供了实战演练案例,帮助读者掌握数组的实际应用。理解数组的内存布局有助于避免越界访问等错误,提高编程效率。

2026-04-06 03:18:03 409 7

原创 C语言实战:来玩一局猜数字游戏

本文介绍了如何使用C语言实现一个简单的猜数字游戏。主要内容包括:1)通过rand()函数生成伪随机数,结合srand()和time()函数设置随机种子;2)利用取模运算控制随机数范围在1-100之间;3)构建游戏逻辑框架,包括菜单界面、猜数反馈和次数限制功能。文章详细讲解了随机数生成的原理,并提供了完整的代码实现,展示了如何通过循环和条件判断来实现游戏的核心机制。该程序允许玩家在有限次数内猜测计算机生成的随机数字,并根据输入给出"猜大"或"猜小"的提示。

2026-04-06 03:16:05 788 11

空空如也

空空如也

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

TA关注的人

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