- 博客(49)
- 收藏
- 关注

原创 【C语言】输入输出函数
一、printf函数(占位符、输出格式)和scanf函数(返回值、输入缓冲区、赋值忽略符)二~三、字符输入输出函数(putchar、getchar)和字符串输入输出函数(puts、gets)注:输入输出库函数的头文件都是 stdio.h。
2024-08-22 20:09:05
12129
6

原创 【C语言】操作符(运算符)详解(非常完整,涵盖各种类的操作符,每个操作符都有示例演示)
一、下文会叙述到的所有操作符的汇总和分类二~十三、对各种操作符展开介绍及大量示例演示使用效果十四、含重要的操作符优先级、结合性的整合表格,十分清晰好用
2024-08-02 19:43:39
12568
5
原创 【Linux系统】基础IO
复习C⽂件IO相关操作;认识⽂件相关系统调⽤接⼝;认识⽂件描述符;理解重定向的原理;对⽐fd和FILE,理解系统调⽤和库函数的关系;理解⽂件和内核⽂件缓冲区;理解语言级缓冲区和内核级缓冲区的区别
2025-07-22 21:54:07
1037
原创 【Linux系统】进程控制(进程创建、进程终止、进程等待 和 进程程序替换)
本文介绍了Linux进程管理的核心概念。在进程创建方面,详细解析了fork系统调用的工作原理,包括父子进程共享代码数据的机制、写时拷贝技术(仅修改时才复制物理内存页)及其性能优势。进程终止部分阐述了退出码机制,系统化整理了0-255的退出码含义及其应用场景(如0表示成功,127为命令未找到),并提供了查看退出码的echo $?实用命令。文章通过代码示例和图表清晰地展示了进程创建与终止的关键技术原理。
2025-06-27 13:08:44
1268
原创 【Linux系统】初识虚拟地址空间
摘要 本文探讨了程序地址空间的虚拟内存管理机制。通过代码示例验证了程序各区域(代码区、静态区、堆区、栈区等)的地址分布规律,发现用户层面使用的都是虚拟地址而非物理地址。重点分析了fork()创建子进程时出现的"同一虚拟地址对应不同值"现象,揭示了虚拟地址空间的本质——操作系统为每个进程维护独立的虚拟地址空间,通过页表映射到物理内存。当子进程修改共享数据时会触发写时复制机制,从而保持进程间的数据独立性。最后用"大富翁与私生子"的比喻形象说明了操作系统如何通过虚拟地址空间
2025-06-17 20:43:36
1064
原创 【Linux系统】命令行参数 和 环境变量(含内建命令介绍)
本文介绍了Linux系统中命令行参数和环境变量的相关知识。关于命令行参数,main函数通过argc和argv参数获取命令行输入的信息,实现了根据不同选项执行不同功能的效果。环境变量是系统级别的全局变量,所有进程在创建时都能获取环境变量信息,可通过env命令、echo命令、main函数参数或getenv函数等方式查看。文章还解释了本地变量与环境变量的区别,并展示了命令行解释器-bash如何通过系统配置文件获取环境变量,并通过进程继承机制传递给子进程。
2025-06-04 16:08:16
1262
1
原创 【Linux系统】进程概念(进程状态、进程优先级、进程切换 和 进程调度)
本文介绍了Linux系统中进程的基本概念和管理方法。进程是程序运行时的实例,由进程控制块(PCB)描述,Linux中具体实现为task_struct结构体,包含进程ID、状态、优先级、内存指针等信息。系统通过将PCB组织成链表来管理大量进程。
2025-05-29 14:00:08
1435
原创 【Linux系统】冯诺依曼体系结构 和 操作系统的介绍
冯诺依曼体系结构是现代计算机的基础,其核心包括存储器(内存)、中央处理器(CPU)、输入设备和输出设备。CPU只能直接与内存交互,而外设(如键盘、磁盘等)也只能通过内存与CPU通信。这种设计解决了外设与CPU之间效率和容量差距的问题,内存作为缓存,提高了整体效率。操作系统是管理计算机软硬件资源的软件,位于用户层和系统底层之间,通过系统调用接口与用户交互,确保安全性和效率。系统调用被封装成库函数,便于开发者使用,进一步降低了用户操作计算机的门槛。
2025-05-22 10:19:23
1233
原创 【Linux系统】gcc编译器的使用
C程序编译过程分为四个主要步骤:预处理、编译、汇编和链接。预处理阶段处理宏替换、去注释、条件编译和头文件展开,生成以“.i”为后缀的文件。编译阶段检查代码规范性和语法错误,并将代码翻译成汇编语言,生成以“.s”为后缀的文件。汇编阶段将汇编代码转化为二进制目标文件,生成以“.o”为后缀的文件。最后,链接阶段将多个目标文件和库文件链接生成可执行文件或库文件。使用gcc编译器可以一步到位生成可执行文件,也可以分步骤进行编译,通过不同的选项控制每个阶段的输出。
2025-05-20 15:03:20
1313
原创 【Linux系统】Linux入门系统程序−进度条
Linux入门系统程序−进度条程序的实现(结合使用场景),铺垫知识:1、回车符 和 换行符的区别; 2、用户缓冲区问题
2025-05-19 13:41:44
820
原创 【Linux系统】自动化构建-make/Makefile的使用
make是Linux系统中的一条命令,Makefile是开发者创建的文件,两者结合用于自动化项目构建。Makefile定义了编译规则,指定文件的编译顺序和操作,而make命令则解释并执行这些规则。通过Makefile,开发者只需运行make命令即可自动完成整个工程的编译,极大提升开发效率。Makefile中的依赖关系和依赖方法决定了编译的顺序和操作,而伪目标(.PHONY修饰)则确保某些操作总是被执行,不受文件修改时间的影响。通过对比实验,展示了伪目标的特性及其与文件修改时间的关系。
2025-05-12 16:57:00
1511
原创 【Linux系统】vim编辑器的使用
Linux下的Vim编辑器是一款功能强大的多模式文本编辑器,其核心特点是通过不同模式实现高效编辑。 Vim包含三种主要模式:普通模式(Normal Mode):默认进入的模式,用于文本导航、复制/粘贴等操作(按Esc返回此模式)插入模式(Insert Mode):在普通模式下按i/a/o等键进入,可直接编辑文本命令行模式(Command Mode):在普通模式下按shift+;(相当于:)进入,支持保存文件、退出等指令,也可以进行内容替换,找字符串,列出行号等操作
2025-05-06 20:29:47
1715
原创 【Linux系统】详解Linux权限
一、学习Linux权限的铺垫知识(Linux的文件分类 和 Linux的用户相关知识)二、Linux权限的概念以及修改方法(文件访问权限 和 访问者身份的相关修改方法)三、Linux权限的效果实践(普通文件的权限效果 和 目录文件的权限效果)四、粘滞位(常用于合作开发)
2025-04-28 00:05:40
1671
原创 【Linux系统】Linux基础指令(详解Linux命令行常用指令,每一个指令都有示例演示)
详解与文件路径相关的指令、创建和删除文件的指令、修改文件内容的指令、查看文件属性和内容的指令、复制和移动文件的指令、查找文件及文件中指定内容的指令、压缩和解压文件的指令、时间和日期相关的指令 以及 一些其他指令
2025-04-21 00:05:00
1819
原创 【C++】多态详解
多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运行时多态(动态多态),后面我们讲的多态主要是指运行时多态。编译时多态(静态多态)主要就是 函数重载 和 函数模板,他们传不同类型的参数就可以调用不同的函数,通过参数不同达到多种形态,之所以叫编译时多态,是因为他们实参传给形参的参数匹配是在编译时完成的,我们把编译时⼀般归为静态,运行时归为动态。运行时多态,具体点就是去完成某个行为(函数),可以传不同的对象就会完成不同的行为,就达到多种形态。
2025-04-07 00:01:38
1677
原创 【C++】继承详解
继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承是类设计层次的复用。
2025-04-04 13:54:46
1491
原创 【C++】模板详解(函数模板 和 类模板)
1.模板的分类(函数模板 和 类模板)2. 模板的原理(模板只是一个模具,它本身并不是函数 或 类。模板只有实例化之后才生成对应的函数 或 类)3. 函数模板的实例化(隐式实例化 和 显示实例化)和 类模板的实例化(与函数模板实例化不同,类模板实例化需要在类模板名字后跟< >,然后将实例化的类型放在< >中)4. 模板的特化(全特化 和 偏特化)
2025-03-29 00:04:13
1627
原创 【算法】常见排序算法(插入排序、选择排序、交换排序和归并排序)
1.插入排序(直接插入排序 和 希尔排序)、选择排序(直接选择排序 和 堆排序)、交换排序(冒泡排序 和 快速排序)和归并排序 2.重点内容:快速排序(三个版本的算法思路及代码实现 以及 快速排序的复杂度讨论及其优化方法:随机选取基准值 、三数取中选取基准值 和 三路划分)
2025-03-24 00:03:59
2186
原创 【C++】priority_queue的使用及模拟实现(含仿函数介绍)
一、 priority_queue的介绍(优先级队列是默认使用vector作为其底层存储数据的容器适配器,在vector上又使用了堆算法将vector中元素构造成堆的结构,因此priority_queue就是堆)二、priority_queue的使用 及 模拟实现 三、仿函数的介绍(通过重载函数调用运算符 operator() 使对象能够像函数一样被调用的编程方式)
2025-03-21 00:00:58
1116
原创 【C++】stack和queue的使用及模拟实现(含deque的简单介绍)
一、deque的简单介绍(引入deque的初衷、deque的结构 以及 选择deque作为stack和queue的底层默认容器的原因)二、stack和queue的使用及模拟实现
2025-03-19 00:09:39
1061
原创 【C++】list(下):list类的模拟实现(含反向迭代器实现)
list类的的模拟实现、ist的迭代器失效问题 以及 list与vector的对比。【C++】list(上):list类的常用接口介绍。
2025-03-17 00:00:44
1293
原创 【C++】list(上):list类的常用接口介绍
一、list的介绍(包含list类中typedef的部分类型别名介绍)二、list类的常用接口说明(vector类对象的 常见构造、容量操作、遍历操作 和 修改操作等接口,以及一些list特有的操作(比如 splice、merge、remove、remove_if 等)介绍)三、list类的成员函数sort和reverse 与 算法库中sort和reverse的差异
2025-03-13 10:56:36
1439
原创 【C++】vector(下):vector类的模拟实现(含迭代器失效问题)
vector类的常用接口的模拟实现 以及 vector 迭代器失效问题。【C++】vector(上):vector的常用接口介绍。
2025-03-10 00:06:38
1411
原创 【C++】vector(上):vector的常用接口介绍(含迭代器种类的介绍)
一、vector的介绍(包含vector类中typedef的部分类型别名介绍)二、vector类的常用接口说明(vector类对象的常见构造(重点)、容量操作、遍历操作 和 修改操作等接口,以及一些vector类非成员函数的接口)
2025-03-03 00:01:30
1716
原创 【C++】string类(下):string类的模拟实现
string类的常用接口的模拟实现 以及 三种swap的模拟实现。配套博客:【C++】string类(上):string类的常用接口介绍
2025-02-17 16:00:46
1743
原创 【C++】string类(上):string类的常用接口介绍
一、C++中设计string类的意义<>二、string类的常用接口说明(string类对象的常见构造、容量操作、遍历操作、修改操作和查找操作等接口,以及一些string类非成员函数的接口)
2025-02-03 20:03:44
1699
原创 【C++】内存管理 : new/delete
二、C++内存管理方式(new/delete操作内置类型和自定义类型的区别)三、operator new与operator delete函数(new在底层调用operator new全局函数来申请空间,delete在底层通过operator delete全局函数来释放空间)五、new/delete和new[ ]/delete[ ]混用出现问题的原因>六、定位new表达式(placement-new)
2025-01-13 00:12:19
1880
原创 【C++】类和对象(下):友元、static成员、内部类、explicit 和 匿名对象
一、友元(友元函数 和 友元类)二、static成员(类中被static修饰的成员变量 和 成员函数)三、内部类( 如果⼀个类定义在另⼀个类的内部,这个类就叫做内部类)四、隐式类型转换(加explicit可以阻止隐式类型转换)五、匿名对象
2025-01-06 19:01:04
1470
原创 【C++】类和对象(中):类的默认成员函数
一、类的6个默认成员函数(构造函数、析构函数、拷贝构造函数、赋值运算符重载 和 两种取地址运算符重载)二、构造函数中的重点知识(初始化列表)三、学习赋值运算符重载 和 两种取地址运算符重载的预备知识(运算符重载)四、const成员函数。
2024-12-31 22:37:43
1145
原创 【C++】类和对象(上):类的定义和类实例化对象
一、类的定义(类定义格式、访问限定符 和 类域)二、实例化(类实例化对象 和 对象大小)三、this指针
2024-12-23 14:15:55
2180
原创 【C++】C++针对C语言缺陷的优化
一、命名空间(解决命名冲突问题)二~三、缺省参数和函数重载(优化设计)四、C++输入&输出(C++的输入输出能自动识别变量类型,能更好的支持自定义类型对象的输入输出)五、nullptr(nullptr是对C语言中NULL的优化设计)六、inline (inline是对C语言宏函数的优化设计)七、引用(引用传参跟指针传参功能类似,引用传参相对方便一些。引用和指针在实践中功能有重叠性,但是各有特点,互相不可替代)
2024-12-21 00:02:29
952
1
原创 【C++】inline函数的优化机制
C程序频繁调用函数会使代码的效率降低,因为创建函数栈帧需要消耗时间。于是C语言就引入了宏函数的概念,使用宏函数来替代一些功能简单的函数,宏函数会在预处理时替换展开,就不需要建立栈帧,就可以提高效率//展开是:1 + 2 * 5 return 0;//展开是:1 + 2 * 5 return 0;//展开是:1 + 2 * 5 return 0;bint main()//展开是:1 + 2 * 5return 0;
2024-12-20 00:15:00
682
原创 【C++】深入理解C++引用
一、引用的概念和定义(引用是给变量取了一个别名,它和它引用的变量共用同一块内存空间)二、引用的使用(引用传参 和 引用做返回值)三、const引用(const引用的权限问题)四~五、指针和引用的关系 以及 引用的底层原理
2024-12-16 00:04:04
1405
原创 【C语言】文件操作(万字解析+形象图解)
一、文件名和文件的分类 二~三、文件缓冲区、文件指针 四、抽象出流的概念简化对各种输入输出设备的操作 五、fopen和fclose函数的介绍 六~七、文件的顺序读写和随机读写(文章主要篇幅) 八、文件读取结束的判定
2024-11-09 16:30:34
2539
4
原创 【C语言】动态内存管理(含程序内存区域划分)
一、动态内存管理的意义 二~三、malloc和calloc函数的对比;malloc、calloc、realloc函数与free结合使用;realloc函数在调整内存空间时的不同情况 四、常见的动态内存的错误 五、C语言中程序内存区域划分(栈区、堆区、静态区和代码段)
2024-10-28 13:47:33
1386
原创 【C语言】数据类型和变量
一、数据类型分类(内置数据类型:字符型、整型、浮点型和布尔类型)(自定义数据类型:数组、结构体、枚举和联合体)二~三、深入研究内置数据类型(内置数据类型的大小、使用内置数据类型创建变量、signed 和 unsigned)四、自定义数据类型的内容过于庞大,所以每种自定义数据类型都专门写了一篇博客来介绍,文中有相应链接。
2024-10-06 10:17:48
2056
1
原创 【C语言】自定义类型:结构体
一 ~ 三、介绍了结构体的声明(包含对匿名结构体的介绍)、结构体变量的创建和初始化以及如何使用结构成员访问操作符去访问结构体的成员 四、结构体的大小计算(通过结构体内存对齐规则来计算) 五、结构体传参的时候,最好传结构体的地址
2024-10-02 11:39:38
1383
原创 【C语言】整数和浮点数在内存中的存储
一、整数在内存中的存储(涉及原码、反码、补码和大小端字节序的知识)二、浮点数在内存中的存储(将浮点数的符号位、有效数字和指数位等信息转换后存入内存)
2024-09-29 20:50:04
1076
原创 【C语言】C语言的三大基本结构(顺序结构、选择结构和循环结构)
一、C语言的基本结构分为顺序结构、选择(分支)结构和循环结构。二~三、分支结构(使用 if 、 switch 语句实现分支结构)和循环结构(使用 for 、 while 、 do while 语句实现循环结构)。四~五、break、continue和goto 语句的介绍。
2024-09-06 20:13:27
6002
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人