自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 模板初阶 —— 让编译器帮你写“同一套逻辑、不同类型“的代码

本文详解C++模板初阶核心:以泛型编程为动机,通过函数模板与类模板实现“一法通万法”。函数模板在编译期根据实参类型自动实例化,避免重载带来的代码重复;类模板需显式指定类型参数,且成员函数定义必须带template<typename T>头。重点解析了隐式/显式实例化、模板参数推演规则及与非模板函数的匹配优先级,揭示模板本质是编译器生成多份类型专属代码,提升复用性但带来代码膨胀。

2026-09-28 16:56:02 194

原创 C++ 内存管理 —— new/delete 到底比 malloc/free 多做了什么?

new/delete 与 malloc/free 核心区别在于:前者在分配内存后自动调用构造函数,析构时调用析构函数,管理对象生命周期;后者仅分配/释放原始内存,不涉及初始化。对内置类型二者近似,但自定义类型中 new/delete 是必须的。底层 operator new 实际由 malloc 实现,失败抛出 bad_alloc,而 malloc 返回 NULL。new 还支持定位 new,可在已有内存上构造对象。

2026-09-25 17:54:42 198 3

原创 C++ 类与对象终极解析:从“能跑“到“能上工程“

本文从“能跑”的类出发,剖析其在工程化中的三大缺陷:手动初始化/销毁导致内存泄漏、错误码(如-1)无法区分真实值、缺乏拷贝语义。通过引入构造函数、析构函数、深拷贝、拷贝赋值重载、异常安全等机制,逐步将类改造为可复用、安全的工程级代码。强调封装的重要性——隐藏实现细节,保障接口稳定;详解this指针的作用与原理;揭示默认成员函数的隐式生成规则,指出浅拷贝的隐患。最终目标是让类从“能运行”迈向“可维护、可扩展、可复用”的工程标准

2026-09-23 09:05:09 320 3

原创 浮点数与自定义类型:从 IEEE 754 到位段联合体

C语言中,浮点数遵循IEEE 754标准,以符号、指数、尾数三部分存储,与整数视角迥异。结构体成员按对齐规则布局,影响内存占用;位段可节省空间但跨平台风险高,且不可取地址;联合体则共享内存,实现多类型数据的灵活存储。合理运用这些自定义类型,可在性能、空间与可移植性间取得平衡。

2026-09-21 21:24:33 157

原创 枚举与动态内存:从「编译时常量」到「运行时空间」

概念枚举宏定义类型检查有(枚举是独立类型)无(纯文本替换)调试信息调试器能看到符号名预处理后符号消失作用域受作用域控制全局有效(除非#undef适用场景一组相关的整数常量单个常量或任意代码片段函数分配初始化释放malloc不初始化freecalloc初始化为 0freerealloc保留旧数据,新空间不初始化free柔性数组指针方案一块连续内存,一次 malloc 一次 free两块内存,两次 malloc 两次 free更好的缓存局部性。

2026-09-21 21:21:58 194

原创 qsort 与通用排序:从「只能排 int」到「什么都能排」的进化之路

qsort是C标准库提供的通用排序函数,通过void*泛型指针与函数指针回调实现对任意类型数据的排序。其核心在于:用void*屏蔽类型信息,以size_t传递元素大小,通过比较函数返回值约定(>0、==0、<0)决定排序顺序。结合(a>b)-(a<b)防溢出技巧和逐字节交换,可实现安全高效的通用冒泡排序。该设计体现了“将行为作为参数传递”的策略模式思想,是理解C语言泛型编程的关键。

2026-09-21 21:20:19 232

原创 不打断心流的翻译:QuickTranslate,让翻译从一个动作开始

看到不懂的内容,按下一个快捷键,翻译窗口立即出现。QuickTranslate 是一款为 macOS 打造的原生即时翻译工具

2026-09-18 11:44:40 226 4

原创 数据结构——栈的概念理解与代码实现

栈是后进先出(LIFO)的受限线性表,仅允许在栈顶进行插入(Push)和删除(Pop)。本文采用动态数组实现,top 指向栈顶下一个空位(初始为0),元素个数即为 top。核心操作如入栈、出栈、取栈顶、判空等均达 O(1) 时间复杂度,通过扩容机制保证高效性。关键细节包括:空栈判断 top == 0,取栈顶需 arr[top-1],扩容失败应终止程序。栈广泛应用于括号匹配、表达式求值、深度优先搜索及函数调用等场景,是数据结构中的基础而核心的工具。

2026-09-18 10:37:16 60

原创 数据结构——队列的概念解析与核心代码

<think>我们只需要根据用户提供的长文生成一个≤150字的文章摘要。要求概括核心内容,包括队列的定义、特点、关键实现、复杂度、常见陷阱等。注意字数限制。综合提炼即可。</think>队列是先进先出的受限线性表,用带头尾双指针和size的链式结构实现,入队尾插、出队头删均O(1)。用size维护长度使判空求长O(1),且需注意只剩一个节点出队时置空尾指针、销毁时先存next再free等经典陷阱。整体适合链表实现,优于数组开头的队列。

2026-09-04 11:37:33 273

原创 解析预处理与编译的过程

<think>我们需要根据用户要求,生成≤150字的文章摘要。用户提供了一篇关于C语言预处理与编译的文章,要求“根据以下内容,生成≤150字的文章摘要”。我们需要输出摘要,需简洁,不超过150字。注意内容范围,可能包括宏、条件编译、头文件等。需要提炼核心观点。同时,注意用户还附带了很长的内容,但我们只需要摘要。确保内容在150字内。中文。 摘要可以包括:预处理是编译前文本替换,宏不是函数,#include不是导入,#if不是if,关键在于理解替换过程,注意加括号避免优先级问题,条件编译用于控制代码,特殊运算

2026-09-03 11:29:22 191

原创 万字解析动态内存从编译到运行

枚举把散落的魔法数字变成有名字的常量,而动态内存让你在程序运行时按需索取堆空间——两者一个管编译时,一个管运行时,都是写出灵活 C 程序的基石。概念枚举宏定义类型检查有(枚举是独立类型)无(纯文本替换)调试信息调试器能看到符号名预处理后符号消失作用域受作用域控制全局有效(除非#undef适用场景一组相关的整数常量单个常量或任意代码片段函数分配初始化释放malloc不初始化freecalloc初始化为 0freerealloc保留旧数据,新空间不初始化free。

2026-09-02 19:57:23 196

原创 内存函数与数据存储

内容是关于内存函数与数据存储的,重点包括memcpy/memmove/memset、大小端、整型提升等。需要简洁概括核心要点。注意字数限制。我们应提炼主要观点:内存函数按字节操作;memset赋非0值出错因按字节;memmove处理重叠用前后策略;数据存储本质二进制,解读方式(大小端、整型提升)影响结果。输出不超过150字。</think>内存函数按字节操作,memmove用“前前后后”策略处理重叠安全拷贝;memset对int数组赋非0值因逐字节设

2026-09-02 19:56:06 217

原创 操作符的深入理解学习并实操

本文摘要: C语言中的位运算是底层高效操作的核心技术,通过补码实现二进制运算。主要内容包括:1) 进制转换基础与整数存储(原码/反码/补码);2) 整形提升规则;3) 移位操作(左移乘2^n、右移除2^n);4) 位操作符(与、或、异或、取反)及其应用;5) 经典算法如异或交换和统计1的个数。特别强调补码运算原理和移位操作的实际效果,通过代码示例演示了进制转换、移位运算和位操作的实际应用。理解这些概念对编写高效底层代码至关重要。(149字)

2026-08-06 23:01:22 331 7

原创 用 Codex CLI 造了一个 Claude Code 桌面客户端

摘要: 作者基于对终端版Claude Code的使用痛点,利用Codex CLI开发了一款8000行代码的Electron桌面客户端。该工具保留了CLI核心功能,新增了会话管理、可视化工具调用、Markdown预览和多项目切换等特性。开发过程采用"Vibe Coding"模式,完全通过自然语言与AI协作完成,包括架构设计、代码生成和问题修复。应用设计遵循本地优先、键盘驱动原则,提供Agent和Chat双模式,并集成SQLite持久化。最终产品实现了终端与GUI的优势结合,解决了AI编程中的上下文管理、操作透

2026-08-03 21:43:20 516 7

原创 指针的初步进阶与初步拓展

文章摘要:指针进阶与复杂声明解析 本文系统讲解了高级指针概念,包括二级指针、指针数组、数组指针和函数指针的核心原理与区别。关键点包括: 指针的本质:指针进阶的核心在于将指针视为可操作的一等公民,通过地址间接访问复杂数据结构。 二级指针:通过解引用链条(**ppa)实现两层间接访问,本质是"指针的指针"。 指针数组vs数组指针: 指针数组是存储指针的数组(int *arr[]) 数组指针是指向整个数组的指针(int (*p)[n]) 区别关键在运算符优先级和括号使用 函数指针:存储函数入口地址(int (*p

2026-08-03 14:59:58 331

原创 从地址到自由:C语言指针核心概念深度复盘与实战指南

本文系统梳理了C语言指针的核心概念与应用技巧。主要内容包括: 指针本质:存放内存地址的变量,通过&取地址、*解引用 类型决定行为:指针类型影响解引用字节数和指针运算步长(如char步长1,int步长4) 数组与指针:数组名在多数情况下退化为首元素指针,但sizeof和&arr例外 const修饰:const在左保护数据,在右保护指针本身 安全实践:防范野指针、悬垂指针,进行空指针检查和越界重置 典型应用:三种数组遍历方式,以及利用指针差值实现strlen函数 关键点:指针类型决定了内存操作方式,理解步长和类

2026-08-01 22:14:55 293

原创 数据结构精讲:单链表从零到精通,一文搞定所有核心操作与高频考点

本文全面解析单链表数据结构,涵盖核心概念、关键操作实现及高频考点。单链表通过分散节点存储数据,每个节点包含数据和指向下一个节点的指针。相比顺序表,单链表插入/删除效率更高(O(1)),但随机访问需要O(n)时间。 文章重点讲解了二级指针的必要性:当需要修改头指针本身时,必须传递二级指针。详细实现了创建节点、打印、头插/尾插、头删/尾删等核心操作,并针对每种操作的特殊边界情况(空表/单节点/头尾节点)给出解决方案。 关键实现技巧包括:使用临时游标保护原头指针、头插尾插的顺序控制、双指针法找前驱节点、先存后删的

2026-07-31 13:52:19 293 1

原创 数据结构:双向循环链表的全方位解构

本文解析了双向循环链表的核心思想与实现。通过引入哨兵节点和双向指针,解决了单链表查找前驱效率低的问题。关键点包括:1)使用自环哨兵节点统一空表处理;2)通过prev指针实现O(1)前驱访问;3)首尾相连形成循环结构。文章详细说明了节点定义、初始化、插入删除等操作的实现细节,特别强调了指针修改顺序的重要性,如"先改新节点再改旧节点"的原则。双向循环链表虽增加空间开销,但显著提升了头尾操作效率,是空间换时间的典型应用。

2026-07-31 13:39:57 427 1

原创 Claude Code桌面版:CLI的GUI化革命

《ClaudeCode桌面版:从命令行到图形界面的体验升级》摘要 这款由开发者自研的ClaudeCode桌面版将原本的命令行工具转化为直观的GUI界面,显著降低了使用门槛。核心功能包括:1)聊天式交互界面,零学习成本;2)支持语法高亮的代码阅读体验;3)项目管理功能,可分类存储和检索历史对话;4)无缝模型切换支持。特别适合不熟悉终端操作的用户、追求高效代码阅读的开发者,以及需要管理多项目对话的重度用户。通过图形化改造,使专业级AI编程工具变得更为亲民实用。

2026-07-09 01:59:39 308

原创 七大排序算法全解析:从插入到三路快排,手把手带你掌握核心思想与实战陷阱

本文介绍了6种经典排序算法及其实现:插入排序(O(n²),稳定)、希尔排序(O(n^1.3),不稳定)、冒泡排序(O(n²),稳定)、选择排序(O(n²),不稳定)、堆排序(O(nlogn),不稳定)和快速排序。每种算法都包含核心思想、代码实现和关键点分析:如插入排序适合小数据量,希尔是插入的优化版本;堆排序需注意建大根堆;选择排序存在"最大值被换走"的经典陷阱。文中还提供了交换函数和堆调整函数等辅助工具,强调算法选择需综合考虑数据规模、有序度、稳定性等因素,没有绝对最优解。所有实现均采用C语言,注重工程实

2026-06-30 17:09:45 382

原创 手撕基础二叉树:从链式存储到层序遍历,彻底搞懂所有核心接口

本文系统介绍了二叉树的链式存储结构及其核心操作。首先阐述了二叉树的基本概念,包括普通二叉树、完全二叉树和满二叉树的区别。通过C语言代码展示了二叉树的创建过程,并构建了一个示例二叉树。重点讲解了二叉树的三种深度优先遍历方式(前序、中序、后序)及其递归实现原理,强调了理解递归的关键在于相信每个子调用都能正确完成工作。文章详细介绍了六个核心统计接口的实现,包括节点总数、叶子节点数、树高度、第k层节点数、查找节点和销毁操作。最后探讨了层序遍历的实现方法,指出需要借助队列数据结构来完成广度优先遍历。全文贯穿了二叉树"

2026-05-24 15:46:38 462 18

原创 纯干货C++STL 在算法比赛中的常见应用与技巧——String 篇

本文介绍了C++中STL库和string类型的优势。相比C语言需要手动实现功能,C++提供了丰富的内置接口。string类型使字符串操作更简便,支持直接赋值、拼接、比较等操作,并提供了push_back、pop_back、size、find等常用方法。此外,string支持范围for循环遍历,比较时直接使用运算符而非strcmp函数。这些特性使string在算法竞赛中比C语言的字符数组更方便实用。文章通过代码示例详细说明了string的初始化、操作方法和特殊功能,帮助读者掌握其核心用法。

2026-03-20 23:45:06 68

原创 快慢指针判环步长差的探讨与解析

本文探讨了链表判环问题中快慢指针算法的步长选择问题。通过数学分析证明,当快指针步长为3时(相对速度2),虽然理论上可能出现"跳过"现象,但由于初始距离和环长的数学关系,两者最终仍会相遇。然而,采用步长差1(快指针步长2)仍是更优选择,原因包括:1)代码实现更简洁,只需一次空指针判断;2)收敛速度稳定,能逐个遍历所有节点;3)避免快指针在环内多次绕行。因此,尽管其他步长组合理论上可行,步长差1仍是解决环形链表问题的最佳实践。

2026-01-09 20:10:15 675

原创 从 0->1 的用C语言手搓基于顺序表的通讯录项目(优化版)

本文介绍了基于顺序表实现通讯录项目的完整开发流程。首先通过C语言实现动态顺序表数据结构,包括初始化、增删查改等核心功能。然后基于顺序表框架构建通讯录系统,将联系人信息封装为结构体,实现添加、删除、修改、查询等功能。项目采用模块化设计,分为顺序表实现和通讯录实现两部分,共5个文件。文章详细说明了各个功能模块的实现逻辑,包括动态扩容策略、边界处理等关键点,并提供了测试方法和优化建议。最终实现了一个可在控制台运行的基础通讯录系统,同时也指出了界面美观性等方面的改进空间。

2026-01-01 18:14:39 950 1

原创 C 语言中函数的高效学习方法实操在内存函数中

在 C 语言我们学习了字符串的一系列操作,比如拷贝,比较等一系列的操作,那么是否有更加全面的函数呢,现在我们来学习直接通过内存访问来操作一些数据的函数首先我提出一些学习方法,在 C 语言库中有许许多多的函数,而很多同学觉得有些函数过两天就忘了,分享一下我在学习各种很重要的函数时一些实用性很强的学习建议。

2025-12-22 15:44:31 763 2

原创 深度剖析C语言中字符串函数的坑点与细节,并且总结归纳

本文介绍了C语言string.h头文件中常用的字符串处理函数及其实现原理。重点讲解了strcpy字符串拷贝、strcat字符串拼接、strcmp字符串比较、strstr子串查找以及strtok字符串分割等函数。详细分析了每个函数的工作原理,包括参数设计、返回值意义,并提供了自定义实现代码。特别指出strcpy和strcat函数中的while(*dest++=*src++)这种精妙的实现方式,以及strtok函数的分割字符串技巧。文章还提到这些函数都有对应的strn版本,可以指定操作长度,并对字符串查找算法进

2025-12-10 21:38:08 759

原创 《大一新生 Mac 生产力折腾记:从游戏本到 MacBook Air M4 + Git 环境全配置》

本文分享了作者从游戏本转向MacBook的经历与经验。作者原使用游戏本学习编程,但因设备笨重、续航短等问题,最终换成了MacBook Air M4,并详细介绍了在macOS上配置代码环境和git工具的过程。通过解决编码格式问题、学习git命令行操作等,作者体会到命令行技能的重要性,并建议遇到技术问题时可借助AI和网络资源解决。文章强调适应不同系统的必要性,为编程学习者提供了实用建议。

2025-11-26 21:45:04 775

原创 C语言指针深度实践:将各种指针剖析至尽

本文通过4个案例深入解析C语言指针的核心概念。首先通过指针运算展示不同类型指针的步长差异,int步长为4字节,char为1字节;其次讲解数组指针的用法和注意事项,演示其在二维数组传参中的应用;然后详细介绍函数指针的声明和使用方法,并展示如何用函数指针数组实现策略模式;最后给出一个利用函数指针数组实现的简易计算器实例。文章强调指针实践的重要性,通过真实代码演示帮助读者掌握指针类型、数组指针、函数指针等关键概念的实际应用。

2025-11-20 18:57:10 383 1

原创 理解指针与数组的学习历程————C语言难点

摘要:文章探讨了C/C++中数组名与指针的关系。初学者常困惑为何函数参数用arr[]接收数组名arr(即地址),通过学习指针发现数组名在多数情况下退化为首元素指针,故arr[i]等价于*(arr+i)。sizeof和&操作是例外。函数参数中int arr[]与int* arr等价,因为数组传参时会被转换为指针。理解这一机制有助于清晰使用数组和指针。(150字)

2025-11-10 00:40:23 787 7

空空如也

空空如也

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

TA关注的人

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