- 博客(70)
- 收藏
- 关注
原创 5 Linux Shell 是啥?权限咋管?r/w/x、粘滞位… 这些关键机制一次说清
本文主要介绍了Linux系统中Shell的作用和权限管理机制。Shell作为用户与内核(Kernel)之间的中介,负责解释用户命令并传递执行结果,类似于Windows中的图形界面。Linux权限系统分为超级用户(root)和普通用户两类,通过su命令可切换用户身份。文件权限包括读(r)、写(w)、执行(x)三种基本权限,可通过chmod、chown、chgrp等命令设置。特别介绍了umask掩码对新建文件权限的影响,以及目录权限的特殊性。最后解释了粘滞位(t)的作用,它可以防止非所有者删除目录中的文件。这些
2025-10-16 10:22:35
695
原创 4 解锁 Linux 操作新姿势:man、grep、tar ,创建用户及添加权限等 10 大实用命令详解
本文介绍了Linux系统中多个实用命令的用法:1. man命令用于查看手册页,支持按章节搜索和关键词查询;2. grep是强大的文本搜索工具,支持递归、忽略大小写等选项;3. history可查看和操作命令历史记录;4. which/whereis用于定位命令路径;5. zip/unzip处理压缩文件;6. rz/sz实现Windows与Linux间文件传输;7. tar是常用的打包/解包工具;8. uname查看系统信息;9. echo配合重定向操作文件内容;10. 用户管理命令如adduser和权限设置
2025-10-13 12:12:39
978
原创 3 Linux磁盘与网络管理终极指南:8 个高效命令解析
本文介绍了Linux系统中常用的磁盘、存储管理和网络相关命令。磁盘管理部分包括df(查看磁盘空间)、du(查看目录大小)、mount/umount(挂载卸载设备)和find(文件搜索);网络部分涵盖ping(网络测试)、ifconfig/ip(网络配置)、netstat/ss(连接状态)和wget(文件下载)。每个命令均列出核心功能、常用选项及示例,如"df -h"查看易读的磁盘信息、"ping -c 3"测试连通性等。这些命令是Linux系统管理和网络维护的基础工具
2025-10-12 10:32:59
687
原创 2 Linux高手必备:文件查看、编辑、监控与进程管理全解析
本文介绍了Linux常用文件操作和系统管理命令。文件操作包括:cat查看文件(支持行号显示),nano/vim文本编辑,less分页浏览大文件,head/tail查看文件首尾内容,wc统计文本信息。系统管理命令包括:sudo提权操作,apt软件包管理,systemctl服务控制,ps进程查看,kill/pkill进程终止。文章通过具体示例详细说明了各命令的常用选项和典型应用场景,如cat -n显示行号、tail -f实时监控日志等。这些命令组合使用可以高效完成日常文件管理和系统维护工作。
2025-10-11 21:47:25
1180
原创 1 玩转Linux命令行:基础文件操作实战教程
本文介绍了Linux操作系统的基础知识和常用命令。主要内容包括:1. Linux基本概念,如操作系统定位、文件系统结构和路径概念;2. 常用文件目录操作命令,如ls(列出目录内容)、cd(切换目录)、pwd(显示当前路径)、touch(创建文件)、mkdir(创建目录);3. 文件管理命令,如rm(删除)、cp(复制)、mv(移动/重命名)。文章详细说明了各命令的功能、常用选项和使用示例,尤其强调了路径的绝对/相对表示方法,以及递归操作等实用技巧,为Linux初学者提供了基础操作指南。
2025-10-09 21:09:59
1044
原创 手把手带你 搭建 Linux 环境及白嫖云服务器
本文介绍了三种搭建Linux学习环境的方法:物理机安装(不推荐)、虚拟机搭建(易出问题)和云服务器(推荐方案)。重点讲解了阿里云服务器的申请流程:通过学生认证获取免费额度,选择Ubuntu/Centos系统,重置密码后使用XShell远程连接。强调实际工作中只需掌握命令行操作,无需使用图形界面。关键需要获取服务器的外网IP、root账户及密码这三个登录信息。文章预告后续将更新Linux基础指令教程,帮助读者适应命令行操作环境。(149字)
2025-10-05 15:05:38
1141
原创 31 手把手教你模拟智能指针:unique_ptr/shared_ptr 实现代码 + 线程安全问题拆解
本文介绍了智能指针的实现原理及模拟实现方法。重点讲解了unique_ptr和shared_ptr的核⼼设计思路:unique_ptr通过禁用拷贝构造实现独占资源管理;shared_ptr使用引用计数机制实现资源共享,通过动态分配计数空间解决多对象管理问题。同时分析了shared_ptr循环引用问题及weak_ptr解决方案,并讨论了shared_ptr的线程安全问题。文章提供了完整的代码实现示例,包括拷贝构造、移动语义等关键操作,帮助读者深入理解智能指针的工作原理。
2025-09-29 10:24:55
779
原创 30 C++ 内存泄漏杀手之智能指针使用详解
本文介绍了C++智能指针的使用场景、设计原理和标准库实现。通过异常处理案例展示了手动内存管理的复杂性,提出RAII思想利用对象生命周期自动管理资源。重点讲解了C++11标准库中的三种智能指针:unique_ptr禁止拷贝只支持移动;shared_ptr支持拷贝并采用引用计数;weak_ptr解决循环引用问题。文章详细说明了智能指针的构造方式、移动语义和引用计数机制,并给出了使用时的注意事项。最后指出智能指针能有效避免内存泄漏,简化资源管理代码。
2025-09-28 09:53:56
706
原创 29 深入浅出C++之try/catch
本文介绍了C++中的异常处理机制。主要包括:异常的基本概念(将问题检测与处理分离)、抛出和捕获方式(throw抛出对象,catch匹配处理);栈展开过程(沿调用链查找匹配catch);异常匹配规则(类型转换、派生类向基类转换等);异常重新抛出(throw;保留原异常);异常安全问题(资源泄漏风险及处理建议)。文章通过多个代码示例演示了异常处理的具体应用场景,并指出析构函数中处理异常的注意事项,最后介绍了标准库中的异常继承体系。
2025-09-27 09:45:30
1087
原创 28 深入浅出之C++包装器
C++中的包装器std::function是一个类模板,能够统一处理具有相同返回值和参数类型的可调用对象(函数指针、仿函数、lambda等)。它通过重载()实现调用功能,若调用空包装器会抛出异常。bind是函数适配器,用于调整参数个数和顺序,通过占位符(_1,_2等)指定参数位置。bind常用于固定部分参数或调整参数顺序,特别适合包装成员函数时需要指定this指针的情况。两者配合使用能提高代码灵活性,如实现映射表、处理缺省参数等场景。
2025-09-26 09:19:22
542
原创 27 深入浅出C++ lamda表达式
本文详细介绍了C++中的lambda表达式,主要包括以下内容:1)基本语法结构捕捉列表->返回类型{函数体};2)三种捕捉方式(显式/隐式/混合捕捉)及其规则;3)lambda底层实现原理(编译器生成仿函数类);4)可调用对象的多种实现方式;5)类成员函数中使用lambda的注意事项(需显式捕捉this指针)。文章通过大量代码示例演示了lambda在排序、线程等场景的应用,并对比了lambda与仿函数、函数指针的异同。特别强调了类中使用lambda时需要正确处理this指针,这对实现回调函数很重要。
2025-09-25 11:00:41
1142
原创 26 深入浅出default和delete关键字
本文介绍了C++中默认成员函数的生成机制及default/delete关键字的用法。主要内容包括:1)默认移动构造和移动赋值的生成条件及注意事项;2)成员变量声明时给缺省值的用法;3)default关键字显式请求生成默认函数,delete关键字禁用特定函数。这些特性在C++11中提供了更精细的控制,有助于资源管理和性能优化,并为后续设计模式(如单例模式)的实现奠定基础。文章通过代码示例演示了这些特性的实际应用。
2025-09-25 10:21:22
1002
原创 C/C++练手小项目之printf函数模拟实现
摘要:本文介绍了一个C语言练手项目——模拟实现printf函数。作者通过讲解函数栈帧和不定参数原理,展示了如何利用va_list、va_start等宏处理可变参数。代码示例演示了PrintNum函数和自定义myprintf函数的实现,其中myprintf使用vasprintf格式化字符串并动态分配内存。文章还提醒读者注意参数类型匹配问题,避免未定义行为。该项目适合想深入了解C语言可变参数机制的开发者参考学习。
2025-09-24 09:17:54
271
原创 C/C++练手小项目之倒计时与下载进度条模拟
【C语言练手项目:倒计时与进度条实现】文章介绍了一个适合初学者的C语言小项目,包含倒计时和模拟下载进度条功能。关键技术点包括:1) printf格式控制符(%d、%s、\r)的使用;2) 控制台颜色输出控制(\033转义序列);3) 字符串自动拼接特性。项目通过缓冲区构建动态进度条,使用Sleep函数模拟下载过程,实现彩色动态效果。代码结构清晰,包含process.h头文件和两个实现文件,适合新手理解基础I/O操作和格式化输出。项目效果展示了一个从3倒数到0的彩色倒计时,随后显示一个动态增长的文件下载进度条
2025-09-23 13:08:49
1174
原创 25 C++中引用折叠与完美转发那些事
本文介绍了C++中的模板参数推导、引用折叠和完美转发机制。主要内容包括:1) 左值右值类型分类及值类别划分;2) 引用折叠规则及其在模板函数中的应用;3) 完美转发的实现原理,通过std::forward保持参数原始值类别。文章通过代码示例详细演示了万能模板参数(T&&)如何根据传入实参类型推导出不同引用类型,以及如何使用完美转发将参数原封不动地传递给下层函数。这些特性是C++11中重要的高级特性,理解它们对掌握现代C++编程至关重要。
2025-09-23 10:34:35
705
原创 24 深入浅出C++左值右值使用场景
本文介绍了C++中右值和左值的使用场景,重点讲解了右值引用和移动语义。文章首先通过函数重载示例展示了左值引用、const左值引用和右值引用的参数匹配规则,然后详细阐述了移动构造函数和移动赋值运算符的实现原理及其在深拷贝类中的优化作用。通过字符串类的实例演示了移动语义如何避免不必要的拷贝,提高程序效率。最后讨论了编译器对返回值优化的处理机制,建议读者理解这些概念后再学习模板相关的高级特性。文章适合有一定C++基础的开发者阅读,为后续学习万能模板和完美转发等内容打下基础。
2025-09-22 10:18:20
1100
原创 23 深入浅出C++中左值和右值
本文深入浅出地讲解了C++中的左值和右值概念,重点解析了右值引用的核心机制。左值是有持久状态、可寻址的表达式,右值则是临时对象或字面量。右值引用通过创建临时对象来"物化"右值,使其可寻址并延长生命周期。文章详细对比了左值引用和右值引用的绑定规则,并通过汇编层分析揭示其底层实现原理。特别阐述了std::move的本质是类型转换而非移动操作,以及引用延长生命周期的注意事项。这些知识为理解移动语义和完美转发奠定了重要基础。
2025-09-21 00:09:34
725
原创 22 C++11 初始化新姿势:{} 统一初始化(省等号)+initializer_list 底层解析
C++11中的{}初始化与initializer_list详解 本文介绍了C++11中的{}初始化(列表初始化)特性及其优势。相比C++98仅限于数组和结构体的{}初始化,C++11扩展了该特性,支持内置类型和自定义类型的统一初始化方式,并允许省略等号。重点讲解了initializer_list容器的实现原理,它通过存储数组首尾指针来支持任意数量元素的初始化,使STL容器能够方便地使用{x1,x2...}语法进行构造和赋值。文章通过代码示例展示了vector和map等容器如何利用initializer_li
2025-09-18 09:32:18
1128
原创 11 从原理到代码:哈希表基础(映射关系)+C++ 实现(哈希桶)+ 新手友好
本文介绍了哈希表的基本概念和实现方法。哈希表通过哈希函数建立关键字与存储位置的映射关系,实现快速查找。文章详细讲解了直接定址法、哈希冲突处理(开放定址法和链地址法)、负载因子等核心概念,并提供了C++实现思路。重点讨论了键值转为整数的处理方法,以及字符串特化的哈希函数实现。最后提到如何用哈希桶封装模拟unordered_map和set,并给出了代码实现链接。文章内容适合编程初学者学习哈希表的基础知识和实现细节。
2025-09-17 10:17:24
1280
原创 21 C++ 哈希表入门:unordered_set/unordered_map 用法 + 与 set/map 性能 / 迭代器差异全解
本文介绍了C++中哈希表容器unordered_set和unordered_map的使用要点。重点对比了unordered_set与set的三大差异:1)对key的要求不同(unordered_set需支持转整形和等于比较);2)迭代器特性不同(unordered_set无序且单向);3)性能差异(unordered_set增删查平均O(1)更快)。unordered_map与map的差异同理。文章还提供了官方文档链接和使用建议,适合C++初学者参考学习哈希表的基本应用。
2025-09-17 09:41:58
381
原创 10 C++map/set的底层数据结构红黑树它来了,红黑树入门全解。
红黑树是一种自平衡二叉搜索树,通过颜色约束(红/黑)保持近似平衡。其核心规则包括:根和叶子节点为黑色;红色节点的子节点必须黑色;任一节点到叶子节点的路径包含相同数量的黑色节点。这些规则确保最长路径不超过最短路径的两倍。红黑树的插入操作遵循二叉搜索树规则,新增节点为红色,若违反规则(如父子节点连续红色)则通过变色和旋转调整。相比AVL树,红黑树旋转次数更少,效率同为O(logN)。具体实现涉及多种情况处理,代码可参考开源gitee。
2025-09-14 10:06:17
573
原创 9 铁子们 从原理到实现:AVL 树(自平衡二叉查找树)平衡控制 + 旋转调整全解析
AVL树是最早发明的自平衡二叉查找树,通过左右子树高度差不超过1来维持平衡。本文介绍了AVL树的核心概念:1)引入平衡因子(右子树高-左子树高)控制平衡;2)分析了为何允许高度差为1而非0;3)插入节点时如何更新平衡因子及旋转调整的四种情况(右旋、左旋、左右双旋、右左双旋)。文章提供了实现代码链接,建议读者动手实践以提升编程能力。AVL树通过严格平衡控制,将操作复杂度优化至O(logN)。
2025-09-14 09:45:56
829
原创 20 铁子们,C++map的使用它来了,保姆级别手把手教你使用,使用,使用,用,用.........
本文介绍了C++中map容器的使用方法和特性。map是基于红黑树实现的有序键值对容器,支持O(logN)的增删查改操作。文章详细讲解了map的构造、pair类型定义、比较函数自定义、[]运算符重载等核心功能,并提供了多个使用示例,包括统计元素出现频率等实用场景。同时对比了map与multimap的差异,指出multimap支持键值冗余但不支持[]操作。最后推荐了两道LeetCode练习题供读者实践。本文适合C++初学者学习map容器的基础用法。
2025-09-13 10:41:09
1058
原创 19 铁子们来学习一下set容器的使用吧,使用吧,用吧,吧........
本文介绍了C++中map/set容器的使用。map/set底层基于红黑树实现,set用于key搜索场景,map用于key/value搜索场景。文章详细讲解了set的构造、迭代器遍历、插入删除操作,以及如何通过仿函数控制排序规则。同时对比了set和multiset的差异,multiset允许重复值而set去重。还演示了find、count、erase等常用方法的使用,以及lower_bound和upper_bound的区间操作。适合C++初学者了解STL关联式容器的基本使用。
2025-09-13 10:05:23
728
原创 8 铁子们来认识一下二叉搜索树吧,树吧,树吧,吧 ......
本文介绍了二叉搜索树,为更好的理解AVL树和红黑树和C++容器map/set做铺垫
2025-09-12 10:20:58
1013
原创 7 排序算法通关指南:从 O (n²)(选择 / 冒泡)到 O (nlogn)(快排 / 归并)+ 计数排序
本文介绍了四种经典排序算法及其实现。选择排序通过每次选出最小元素完成排序,时间复杂度O(n²)。冒泡排序通过相邻元素比较交换实现排序,可设置标志位优化。快速排序采用分治思想,通过基准值划分区间,递归实现排序,平均复杂度O(nlogn)。归并排序基于分治策略,将有序子序列合并,需要额外空间,复杂度O(nlogn)。此外还介绍了非比较排序计数排序,适用于数据范围集中的场景,复杂度O(n+range)。最后分析了各算法的稳定性:冒泡、归并、计数排序是稳定的,而选择和快速排序不稳定。
2025-09-11 10:18:39
1014
原创 6 从基础到优化:插入排序(空间 O (1))+ 希尔排序,动图带你吃透排序逻辑
插入排序通过将元素逐个插入有序序列实现排序,时间复杂度O(N^2),空间复杂度O(1),适合接近有序的数据。希尔排序是对插入排序的改进,通过分组预排序(gap逐步缩小至1)提高效率,综合性能优于直接插入排序。两种算法都通过比较和交换元素实现排序,希尔排序的gap计算(gap=gap/3+1)确保最终能退化为直接插入排序。
2025-09-10 10:42:27
367
原创 5 从树到堆:二叉树核心特性 + 堆实现(数组版)+ 堆排序 / Top-K 应用,一篇搞定
本文系统介绍了树和二叉树的基本概念、存储结构及常见算法。主要内容包括:1. 树的基本定义、层次结构和相关术语(节点度、深度、路径等);2. 二叉树的定义与特性,包括满二叉树和完全二叉树;3. 二叉树的两种存储结构:顺序存储(数组)和链式存储;4. 堆的概念与实现,详细讲解了向上调整和向下调整算法;5. 堆的应用,包括堆排序和Top-K问题;6. 二叉树的遍历方法(前序、中序、后序、层序)及其实现。本文重点介绍了基于数组的堆实现和排序算法,并分析了不同算法的时间复杂度,为理解和应用树形数据结构提供了全面的理论
2025-09-10 10:26:42
1049
原创 4 C 语言数据结构实战:栈和队列完整实现(结构体 + 函数)+ 最小栈解决方案
本文介绍了栈和队列两种基本数据结构。栈是遵循后进先出(LIFO)原则的线性表,支持压栈和出栈操作,可用数组或链表实现。文中给出了C语言实现的栈结构体定义及基本操作函数。队列是遵循先进先出(FIFO)原则的线性表,支持入队和出队操作,通常用链表实现。文章详细展示了队列的结构体定义和各类操作函数实现,包括初始化、销毁、入队、出队等。此外还介绍了最小栈的实现思路,通过维护额外栈或使用pair类型来记录当前最小值。
2025-09-09 10:43:03
435
1
原创 3 告别链表刷题迷茫!7 大经典题(反转 / 分割 / 判环)+ 解题技巧 + 面试考点
本文总结了7个常见链表算法题及面试题:1.移除链表元素;2.头插法反转链表;3.快慢指针找中间节点;4.链表分割(使用队列保持顺序);5.回文链表判断(字符串反转比较);6.相交链表(路程相等法);7.环形链表检测(快慢指针)。每个题目都提供了核心思路和关键代码实现,涵盖链表基本操作、双指针技巧等常见解法,适合面试准备和算法练习。
2025-09-09 10:16:39
682
原创 2 线性表实战手册:顺序表操作接口 + 单 / 双向循环链表设计,附场景选型技巧
顺序表和链表是两种常见的线性表实现方式。顺序表基于数组实现,具有随机访问快、空间连续等优点,但存在插入删除效率低、扩容成本高等问题。链表采用动态内存分配,每个节点包含数据和指针,解决了顺序表空间浪费和扩容问题,但访问效率较低。文章详细介绍了静态/动态顺序表的实现原理、操作接口,以及单链表和双向循环链表的结构设计与基本操作(增删改查)。通过对比分析指出,顺序表适合频繁查询场景,而链表更适合频繁插入删除的场景。最后通过火车车厢的比喻形象说明了链表的动态扩展特性。
2025-09-08 10:28:43
779
原创 1 数据结构与算法入门:基础概念 + 大 O 复杂度分析,搭配动画讲解秒懂
数据结构与算法基础概念 数据结构是计算机存储和组织数据的方式,描述数据元素之间的关系。算法是明确定义的计算过程,将输入转化为输出结果。衡量算法效率主要考察时间复杂度和空间复杂度: 时间复杂度 使用大O表示法描述算法执行时间随输入规模的增长趋势 计算规则:保留最高阶项并去除系数 常见复杂度:O(1)、O(logN)、O(N)、O(N²) 空间复杂度 衡量算法运行所需的额外存储空间 现代计算机存储充足,通常更关注时间复杂度 示例:冒泡排序空间复杂度O(1),斐波那契数列O(N) 掌握复杂度分析是学习算法的基础,
2025-09-08 10:07:40
1068
原创 18 从对象内存到函数调用:C++ 虚函数表原理(继承覆盖 / 动态绑定)+ 多态实战
本文主要探讨C++多态的实现原理,重点分析虚函数表机制。主要内容包括:1)虚函数表指针在对象内存布局中的位置(通常位于对象起始处);2)派生类虚表继承基类虚表内容并覆盖重写的虚函数地址;3)动态绑定机制(运行时通过虚表查找函数地址);4)构造函数不能声明为虚函数的原因(构造与虚表初始化的冲突);5)虚函数的"虚特性"在继承链中的传递特性;6)对象切片问题(切片后基类对象使用基类虚表)。通过代码示例展示了虚函数表在不同继承场景下的变化,并解释了多态调用的底层实现机制。
2025-09-08 09:37:08
2036
原创 17 别只知 “多态” 不知其然!C++ 虚函数机制 + 编译时多态 + 重写 / 隐藏 / 重载区别全解
摘要:多态是C++面向对象编程的核心特性,分为编译时多态(函数重载/模板)和运行时多态(虚函数机制)。实现运行时多态需满足:基类指针/引用调用虚函数,且派生类完成虚函数重写。虚函数重写需保持函数签名一致,但存在协变特例(返回值类型可不同)。基类析构函数应声明为虚函数以避免多态删除时的内存泄漏。C++11引入override/final关键字增强安全性,纯虚函数(=0)强制派生类实现抽象接口。多态与函数隐藏、重载的区别在于作用域规则,虚函数默认参数采用静态绑定需特别注意。
2025-09-07 15:15:29
694
原创 16 从 C 到 C++:用结构体模拟 “继承”+C++ 继承全解析(切片 / 权限 / 静态成员 / 不可继承类)
本文介绍了C语言中如何用数据容器存储不同结构体对象的方法,通过结构体嵌套和类型转换实现类似继承的效果。同时讲解了C++继承的基本概念和实现方式,包括访问权限变化、作用域规则、默认成员函数生成等。重点分析了派生类与基类间的转换关系,解释了切片现象,并展示了如何通过继承实现代码复用。最后讨论了不能被继承的类实现方法,以及静态成员和友元在继承中的特性。
2025-09-06 10:52:10
1202
原创 15 C++ 模板深度进阶:非类型参数使用注意点 + 模板特化实战 + 编译问题完美解决
本文介绍了C++模板的进阶应用,主要包括非类型模板参数和模板特化两大主题。非类型模板参数使用常量作为模板参数,但需注意编译期确定性和类型限制。模板特化分为函数模板特化和类模板特化,用于处理特殊类型的情况,其中类模板特化包括全特化和偏特化(部分特化和参数限制特化)。文章还讨论了模板分离编译问题,建议将声明和定义放在同一文件中(如.hpp文件)。这些技术能有效解决模板在特定场景下的问题,提升代码的灵活性和正确性。
2025-09-05 10:32:52
590
原创 14 C++ STL 容器实战:stack/list 模拟实现指南 + priority_queue 用法及避坑技巧
本文介绍了栈(stack)和队列(queue)的模拟实现及应用。栈可通过vector实现,支持push、pop等操作,应用于逆波兰表达式计算;队列因涉及头删尾插,更适合用list实现。优先级队列(priority_queue)基于堆结构,默认使用vector容器构建小堆(堆顶最小),可通过greater比较器创建大堆。堆遍历输出时小堆为降序、大堆为升序。处理自定义类型需重载比较运算符,如日期类需实现<和>操作符以支持堆排序。优先级队列典型应用包括TopK问题,通过维护K个元素的堆结构高效获取前K
2025-09-05 10:02:03
273
原创 17 C 语言宏进阶必看:从宏替换避坑到宏函数用法,不定参数模拟实现一次搞定
本文详细介绍了C语言预处理的相关知识,主要包括预定义符号和宏定义的使用。预定义符号如__FILE__、__LINE__等可在编译时获取文件信息;宏定义(#define)用于文本替换,可定义常量、带参数宏和复杂表达式。文章重点讲解了宏替换规则、宏与函数的区别、#和##运算符的使用技巧,以及可变参数宏的实现方法。通过大量示例说明了宏定义中的常见问题和注意事项,如括号使用、参数类型无关性、字符串化和符号拼接等特性,帮助开发者正确使用预处理功能提高代码效率。
2025-09-04 09:55:38
1391
原创 16 为什么文件内容没写入?C 语言文件操作函数避坑 + 注意点,缓冲区机制讲清楚了
文章摘要:本文系统介绍了C语言文件操作的核心概念。主要内容包括:1)文件分类(文本文件和二进制文件)及其存储方式的差异;2)文件指针(FILE*)的作用机制;3)文件打开关闭操作(fopen/fclose)及模式选择;4)文件读写函数分类及使用场景;5)随机读写操作(fseek/ftell);6)文件结束判定方法;7)文件缓冲区的原理及刷新策略(行刷新、满刷新等)。特别强调了文本与二进制模式在Windows/Linux系统的差异,以及缓冲区管理的重要性。
2025-09-03 16:49:38
1125
原创 15 从动态分配到内存布局:C 语言动态内存函数用法 + 柔性数组实战 + C/C++ 内存分布图全梳理
动态内存管理是C语言中重要的内存分配方式,它允许程序在运行时根据需要申请和释放内存。主要函数包括: malloc - 分配未初始化内存 calloc - 分配并初始化为0的内存 realloc - 调整已分配内存大小 free - 释放动态内存 使用注意事项: 必须检查分配是否成功 避免内存泄漏和重复释放 推荐使用临时指针接收realloc结果 释放后应将指针置NULL 柔性数组是C99特性,允许结构体最后包含一个未指定大小的数组,必须通过动态内存分配使用。 动态内存管理提高了程序的灵活性,但也需要谨慎使用
2025-09-02 20:17:17
1107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅