自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux 中的编译器 GCC 的编译原理和使用详解

GCC是GNU开发的编译器套件,支持C、C++等多种编程语言。其编译过程分为四步:预处理(处理宏、注释等,生成.i文件)、编译(转为汇编代码.s文件)、汇编(转为机器码.o文件)和链接(合并库文件生成可执行程序)。通过命令行选项可控制各阶段输出,如-E预处理、-S生成汇编、-c生成目标文件,最终完成从源代码到可执行文件的转换。

2026-01-20 21:51:23 499

原创 Linux的工具第一篇:vim编辑器的使用详解

摘要:本文介绍了Vim编辑器的基本使用方法,主要包括三种模式(命令模式、插入模式、底行模式)及其功能,以及文件操作、光标移动、复制粘贴、删除替换等常用命令。命令模式下可通过快捷键进行文本编辑,插入模式用于输入内容,底行模式用于执行保存退出等操作。文章还详细说明了如何移动光标、复制删除文本、撤销操作等实用技巧,为初学者提供了Vim的基础操作指南。

2025-12-19 22:35:53 899 1

原创 【Linux学习】第四弹——Linux权限管理

Linux系统用户分为超级用户(root)和普通用户,超级用户拥有全部权限,命令提示符为"#"。文件权限分为读(r)、写(w)、执行(x)三种,对应不同用户类型(User/Group/Others)。常用权限管理命令包括:chmod(修改权限)、chown(修改所有者)、chgrp(修改所属组)。umask用于设置新建文件/目录的默认权限,通过掩码值控制实际获得的权限。普通用户默认umask为0002,root用户为0022,修改umask可调整默认权限设置。

2025-10-23 20:50:39 892

原创 【Linux探索学习】第三篇Linux的基本指令(3)——开启Linux学习第三篇

本文介绍了Linux系统中10个常用指令的功能和用法:1.date指令用于显示和设置系统时间;2.find指令用于文件搜索;3.whereis指令在特定路径查找文件;4.grep指令用于文本搜索;5.zip/unzip指令实现文件压缩解压;6.cal指令查看日历;7.tar指令用于文件打包压缩;8.bc指令是计算器工具;9.uname指令查看系统内核信息。这些指令涵盖了时间管理、文件操作、文本处理、系统信息查询等常见需求,是Linux系统操作的基础命令。

2025-10-12 20:40:08 937

原创 【Linux探索学习】第二篇Linux的基本指令(2)——开启Linux学习第二篇

这篇Linux学习文章介绍了6个基础指令:1.man指令(查看命令帮助手册);2.echo和cat指令(文件内容操作与输出重定向);3.mv指令(文件移动/重命名);4.which指令(查找命令路径);5.alias指令(设置命令别名)。文章通过具体示例讲解了每个指令的用法和注意事项,如man需要指定编号区分命令类型,echo的重定向操作会覆盖原内容等。最后作者表示将继续分享Linux知识。

2025-10-09 21:09:34 1403 6

原创 【Linux探索学习】第一篇Linux的基本指令(1)——开启Linux学习第一篇

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信 息。那我们在ls后面加一个选项呢,与上面的ls指令对比,文件的类型、创建时间等,前面多出了很多详细的信息,所以 ls -l指令 的作用其实就是显示出文件的详细信息再看一个ls带选项的例子比较发现ls-a多出很多带点的选项其实这些都是一些隐藏文件,ls -a指令 的作用就是让这些隐藏文件也显现出来功能:显示用户当前所在的目录功能:改变工作目录。将当前工作目录改变到指定的目录下cd .. : 返回上级目录cd /home/l

2025-09-14 19:29:48 1308

原创 【C++进阶学习】第三讲----多态的概念和使用

多态实现的条件:1.必须是基类的指针或引用,因为只有基类的指针或引用才能既指向派生类对象;2.派生类必须对基类的虚函数重写/覆盖,重写或者覆盖了,派生类才能有不同的函数,多态的不同形态效果才能达到。3、派生类必须重写基类的虚函数: 派生类需要重写基类中的虚函数,以提供特定于派生类的实现。重写时,函数签名(包括返回类型、函数名和参数列表)必须与基类中的虚函数完全匹配。

2025-03-24 20:54:52 714 13

原创 【C++进阶学习】第二讲——继承(下)---深入挖掘继承的奥秘

成员变量隐藏:顾名思义是类中的成员函数被隐藏了成员函数隐藏:和成员变量隐藏一样,成员函数被隐藏2.继承与友元在C++中,友元关系不能被继承,因为友元关系是独立于类定义的,并不是类的成员。因此,如果在父类中声明了一个友元函数或友元类,子类无法继承这种关系。3、继承与静态成员在 C++ 中,类可以包含静态成员变量和静态成员函数,其中静态成员变量属于类本身,而不是类的某个对象,因此它们可以在不创建类对象的情况下被访问。当一个类继承另一个类时,子类可以继承其父类的静态成员,并且可以在子类中

2025-03-06 18:41:21 1135 26

原创 【C++进阶学习】第一讲——继承(上)---基础概念及用法

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。在实际运用中一般使用都是public继承,几乎很少使用protetced/private继承,也不提倡 使用protetced/private继承,因为protetced/private继承下来的成员都只能在派生类的类里 面使用,实际中扩展维护性不强。派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用。

2024-11-24 17:10:14 1195 41

原创 C++初阶学习第十三弹——容器适配器和优先级队列的概念

deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。1.3deque与vector和list的比较,以及deque的缺陷与vector比较,deque的优势是:头部插入和删除时,不需要搬移元素,效率特别高,而且在扩容时,也不需要搬移大量的元素,因此其效率是必vector高的。

2024-11-23 16:20:33 1455 31

原创 C++初阶学习 第十二弹——stack与queue的介绍和使用

​C++中的stack是一种遵循后进先出原则的容器适配器。它提供了一系列标准的操作,使得用户可以方便地实现栈这种数据结构。在C++标准库中,stack并不直接暴露给用户,而是作为头文件中stack模板类的声明。这个类是std::deque的封装,因此默认情况下,栈是通过双端队列实现的。但是,用户也可以指定其他的容器作为栈的底层结构,比如std::vector或std::list。​

2024-11-21 15:07:44 777 34

原创 C++初阶学习第十一弹——list的用法和模拟实现

以上关于list的模拟实现有点不全,我后期我会补充一些进来。又不懂的地方可以随时联系。

2024-11-17 19:07:34 944 33

原创 C++初阶学习第十弹——深入讲解vector的迭代器失效

近期我们学习了vector的模拟实现和一些使用方法,接下来我们学习了解vector的迭代器的失效问题。扩容、缩容导致野指针式失效迭代器指向的位置意义改变。

2024-11-08 16:50:05 2325 57

原创 C++初阶学习第九弹-----vector的模拟实现

好了到这里vector的模拟实现差不多就实现完了,请大佬们多多支持。有图可以看出vector有三个成员变量,分别是。

2024-11-06 20:52:37 557 21

原创 C++初阶学习第八弹--深入解析vector的使用

vector是表示可变大小数组的序列容器 就像数组一样,vector也采用的连续存储空间来存储元素。这个问题经常会考察,不要固化的认为,vector增容都是2倍,具体增长多少是根据具体的需求定义 的。vs是PJ版本STL,g++是SGI版本STL。capacity的代码在vs和g++下分别运行会发现,vs下capacity是按1.5倍增长的,g++是按2倍增长的。esize有两个参数,一个是开辟空间大小,一个是初始化大小。可动态增长,可动态缩小,支持随机访问,支持插入和删除。

2024-10-24 20:41:33 722 25

原创 C++初阶学习第七弹——string的模拟实现

有一个点要注意的是在给默认参数的时候不要给"\0"或者是空格。

2024-10-17 20:27:40 732 37

原创 C++初阶学习第六弹------标准库中的string类

常见的string封装的接口函数

2024-09-19 21:20:25 950 31

原创 C++初阶学习第五弹——C++内存管理

new的原理1. 调用operator new函数申请空间,失败就抛异常2. 在申请的空间上执行构造函数,完成对象的初始化delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间new T[N]的原理1. 调用operator new[]函数在operator new[]中实际调用operator new函数完成N个对象空间的申请2. 在申请的空间上执行N次构造函数delete[]的原理。

2024-08-18 23:39:39 1110 45

原创 C++初阶学习第五弹——类与对象(下)

类与对象(上):C++初阶学习第三弹——类与对象(上)-CSDN博客类和对象(中):C++初阶学习第四弹——类与对象(中)-CSDN博客函数名字为:关键字operator后面接需要重载的运算符符号。函数原型:返回值类型 operator操作符(参数列表)在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量 的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始 化一

2024-07-31 22:57:04 1231 30

原创 C++初阶学习第四弹——类与对象(中)

希望给大家带来一定的帮助,下节我会接着讲解关于类和对象—中阶的内容。

2024-07-27 01:16:20 1355 43

原创 C++初阶学习第三弹——类与对象(上)

int* arr;class是定义类的关键字, 其中A是类的名字,class{}中的是类的主体。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者 成员函数。类的两种定义方式: 1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,

2024-07-25 23:15:08 791 26

原创 C++初阶学习第二弹——入门学习C++

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。

2024-07-20 17:10:43 1344 33

原创 C++初阶学习第一弹——入门学习C++

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一 种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而 产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的 程序设计,还可以进行面向对象的程序设计。定义命名空间,需要使用到namespace关键字。

2024-07-09 01:18:30 1161 29

原创 链表的回文结构OJ

题目链表的回文结构_牛客题霸_牛客网对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为。题目来自【牛客题霸】题目对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true本题用到了链表的逆转和链表的中间节点的应用。

2024-06-07 20:24:31 584 22

原创 反转链表OJ的实现

【代码】反转链表OJ的实现。

2024-06-03 20:49:59 330 2

原创 【数据结构】——(二叉树)堆

1.树概念及结构树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1

2024-05-18 16:19:04 870 27

原创 【数据结构】队列讲解且实现

队列(queue)是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表。其严格遵循先进先出(First In First Out)的规则,简称FIFO。队头(Front):允许删除的一端,又称队首。队尾(Rear):允许插入的一端。///}QNode;int size;}Queue;// 队尾入队列// 队头出队列// 获取队列头部元素// 获取队列队尾元素// 获取队列中有效元素个数// 检测队列是否为空,如果为空返回非零结果,如果非空返回0。

2024-05-13 20:10:24 466 3

原创 【数据结构】详解栈且实现

栈压栈入数据在栈顶出栈出数据也在栈顶上图理解一下:栈的实现一般是顺序表。如果是顺序表的话,我们的栈顶应该要在数组末尾!如果在数组头部的话,数据进栈时还需要挪动其余数据以便数据的存入!效率很低!int top;}SL;//初始化//销毁//入栈//出栈//栈数据个数//判空//栈顶数据。

2024-05-13 19:47:36 555 4

原创 线性表的概念与结构,以及顺序表和链表的简单概念

线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

2024-05-06 23:39:19 331 3

原创 getchar和putchar的用法

() 和 putchar() 是一对字符输入/输出函数.他们通常比scanf() 和printf() 函数更快更便捷。getchar()不带任何参数,其实getchar() 和putchar()与scanf() 和printf()功能相似。接下来博主简单的跟大家解释一下。

2024-04-28 17:15:11 1437 3

原创 字符函数和字符串函数

• 字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包 含 '\0' )。• 参数指向的字符串必须要以 '\0' 结束。

2024-04-27 21:22:31 600 1

原创 C语言 基本数据类型及大小

unsigned可以搭配前面的int、short、long一起使用,用unsigned修饰后的数字,就是不带负号了,也就是不能存放负数。整型的关键字是int,定义一个整型变量时,只需要用int来修饰即可。也分为短整型和长整型。浮点型又分单精度浮点型float和双精度浮点型double。前面的整型和浮点型都是用于存放数字。字符型,用于存放字符。

2024-04-27 16:51:44 861 1

原创 算法的时间复杂度和空间复杂度

时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。

2024-04-24 20:16:20 412 2

原创 顺序表的实现

顺序表和数组的区别 顺序表的底层结构是数组,对数组的封装,实现了常用的增删改查等接口。

2024-04-20 20:20:33 273 2

原创 文件和文件操作(C语言)

磁盘或者是说硬盘上的文件就是文件。在程序设计中,我们⼀般谈的文件有两种:程序文件、数据文件。

2024-03-30 15:17:36 571 8

原创 整数和浮点数在内存中存储

例如:十进制的6.0,写成⼆进制是 110.0 ,相当于 1.10×2^2。那么,按照上面V的格式,可以得出S=0,M=1.10,E=2。两部分,2进制序列中,最⾼位的1位是被当做符号位,剩余的都是数值位。符号位都是用0表式正,用1表式。(2)对于64位的浮点数,最⾼的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。(1)对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

2024-03-17 21:40:11 445 2

原创 C语言中关键字:static 和 extern和全局变量和局部变量的讲解

static 和 extern 都是C语言中的关键字。

2024-01-01 16:40:04 651 3

原创 学习C语言函数(#C)

ret_typefun_name(形式参数)• ret_type 是函数返回类型• fun_name 是函数名• 括号中放的是形式参数• {}括起来的是函数体讲解:• ret_type 是用来表示函数计算结果的类型,有时候返回类型可以是 void ,表示什么都不返回• fun_name 是为了方便使用函数;所以函数名尽量要根据函数的功能起的有意义。• 函数的参数函数的参数可以是 void ,明确表示函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。

2023-12-30 22:21:15 2005 4

原创 简单的操作符,逻辑操作符和关系操作符

| 就是或运算符,也就是或者的意思, || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。&& 就是与运算符,也是并且的意思, && 是⼀个双⽬操作符,使⽤的⽅式是 a&&b , && 两边的表达 式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,所以直接结束后a是 11,b是10。计算:先+1,后使⽤;

2023-12-29 13:34:07 2362 1

原创 C语言————分支和循环(下)

语法如下:1.while(表达式)2.语句;来写个代码看看;int main()while(1)//while后边条件满⾜,死循环的打印hehereturn 0;

2023-12-28 20:04:36 1184 1

空空如也

空空如也

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

TA关注的人

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