自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 进程地址空间

在使用C语言设计程序时,有这样一个地址概念如下图。通过如下程序可以取出程序中变量的地址并打印出来执行结果如下,然而打印出来的这些地址并不是物理地址,而是虚拟地址/线性地址。用一个程序通过子进程演示虚拟地址执行结果如下,可以看到子进程在改变全局变量g_val后,地址仍为0x601058与父进程的g_val地址相同,可同一个地址为什么会储存两个不同的值呢?说明这不是物理地址,而是虚拟地址。- 在Linux地址下,这种地址叫做虚拟地址- 我们在⽤C/C++语⾔所看到的地址,全部都是虚拟地址!

2025-03-01 16:51:39 359

原创 进程及从Linux分析进程

1.fork()id返回值,父进程(subpid)、子(0)2.fork有两个返回值3.一个变量怎么会有两个不同的值?--进程需要独立性4.fork之后谁先运行,由OS调度器自主决定。

2025-02-04 16:47:06 996

原创 git是什么及Linux git操作

git是一种版本控制器,对于开发⼈员来说,git最重要的就是可以帮助我们管理软件开发项⽬中的源代码⽂件!可以将写好的源代码文件同步到远程仓库管理(add、commit、push),也可以拉取远程仓库的历史版本源代码到本地。

2025-01-19 16:21:37 383

原创 自动化构建工具——make/makefile

make是一个命令工具,是一个解释makefile中指令的命令工具。make是一条命令,makefile是一个文件(makefile或Makefile都行),两个搭配使用,完成项目自动化构建。makefile中写操作,make执行makefile中命令。上述命令为将hello.c编译链接成可执行文件的过程。clean:上述命令为将hello.i 、hello.s 、hello.o 、hello清除。make hello上述命令即为make,会执行 gcc hello.o -o hello。

2025-01-17 17:26:42 359

原创 C++的智能指针

内存泄漏即不再使用的内存不释放。正确使用智能指针,可以尽可能地避免这样的问题。

2024-11-28 17:21:22 931

原创 C++11的一些实用特性

简单来说,左值:可以取地址(我们可以获取它的地址+可以对非const左值赋值)左值可以出现在赋值对象左边右值:不可以取地址(通常为:常量、临时对象、匿名对象)右值不可以出现在赋值对象左边// 以下的p、b、c、*p都是左值int b = 1;// 以下几个是对上面左值的左值引用// 以下几个都是常见的右值10;x + y;fmin(x, y);// 以下几个都是对右值的右值引用。

2024-11-19 22:52:54 624

原创 哈希与unordered_set、unordered_map(C++)

○搜索元素时对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。然后我们对unordered_set、unordered_map完成封装,unordered_map实现operator[]2.封装unordered_set、unordered_map,解决KeyOfT问题(取出数据类型中的关键码)○插入元素时根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放。该方式即为哈希(散列)方法,哈希方法中使用的转换函数称为。

2024-11-03 11:23:34 1109

原创 C++红黑树插入操作的模拟实现

/节点的颜色RED,BLACK//模版参数Key和Value, _kv(kv), _colour(RED)//默认每个节点颜色为红色{}// 该节点的左孩子// 该节点的右孩子// 该节点的双亲// 该节点储存的数据// 该节点的颜色public:~RBTree()private:return;

2024-10-27 22:27:45 701

原创 AVL树如何维持平衡

整体旋转方法如下图记得。

2024-10-10 20:54:29 1162

原创 C++中set和map的使用

map的主要操作与set类似,insert不允许相同值插入。

2024-09-23 21:08:05 803

原创 Linux中yum命令

a.yum/aptb.rpm安装包安装c.源码安装。

2024-09-12 13:38:53 392

原创 Linux权限概念

Linux下有两种用户:超级用户(root)、普通用户在root权限下使用useradd可以添加用户、设置密码,sudo可以对普通用户执行一条命令提权su 命令可以切换用户su [用户名]

2024-09-12 13:27:53 407

原创 二叉搜索树

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:-若它的左子树不为空,则-若它的右子树不为空,则-它的左右子树也分别为二叉搜索树如下图为一棵搜索二叉树利用二叉搜索树可以快速查找到某个数据,将查找数据与根节点做比较,然后确定其在左子树还是右子树,再查找。但若根节点为一组数据中的最大值或最小值,二叉搜索树就会变成一个链表,查找时间复杂度为(O)。

2024-09-01 22:54:38 386

原创 C++多态

重载:1.两个函数在同一作用域2.函数名相同,参数不同重写(覆盖):1.两个函数分别在基类和派生类的类域2.函数名、参数、返回类型相同3.基类的指针或引用调用虚函数重定义(隐藏)1.两个函数分别在基类和派生类的类域2.函数名相同3.不构成重写。

2024-08-13 16:53:13 573

原创 C++继承

下面我们看到Base是父类,也称作基类。Derive是子类,也称作派生类。一、继承与组合本质都是复用二、当继承和组合都可以使用时看适不适合优先使用组合,继承是一种is a的关系,组合是一种has a的关系三、继承这种通过生成派生类的复用,通常被称为白箱复用(white-box reuse)(从外部可见)。四、组合要求被组合对象具有良好定义的接口。这种复用风格被称为黑箱复用(black-box reuse)(从外部不可见)。五、实践中尽量多用组合。组合的耦合度低代码维护性好。

2024-08-12 20:34:40 1053

原创 C++类模版中限定模版参数类型

这里我们实现一个大小比较的的模版类,如下。然而这样的实现方式,当传入模版参数为指针时,比较的就是指针的地址。运行如下代码运行结果有如下两种情况 ,其原因是因为实际上meless()比较的是a与b的地址。

2024-08-10 16:41:23 463

原创 c++的STL库stack、queue的使用

在STL库中stack是一个模版类,第一个模版参数为存储的数据类型,第二个模版参数为实现stack的容器(可缺省)。常用的成员函数如下。

2024-08-07 17:59:31 230

原创 STL库Vector的常见使用

vector是表示可变大小数组的序列容器,包含于头文件<vector>。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。

2024-07-31 19:58:20 292

原创 模版和STL

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。

2024-05-16 22:47:32 404

原创 C++的内存管理

可申请和释放内置类型空间也可申请和释放自定义类型空间注:1.申请和释放,使用和操作符,申请和释放,使用和。2.在申请自定义类型的空间时,会调用会调用,而malloc与free不会。

2024-05-14 22:10:34 283

原创 类与对象(三)

的地方3.所有成员既可以在初始化列表初始化,也可在函数体内初始化(每个成员在初始化成员列表只出现一次,先走初始化成员列表,再走函数体)4.成员变量在初始化列表初始化顺序为类中声明顺序。

2024-05-07 19:05:18 809

原创 类和对象(二)

1.一般情况下,构造函数都需要我们手动实现(因为无论类的数据成员只有内置类型或是自定义类型,最后都是内置类型)。2.若一个类的数据成员是定义好的类如下,就可以不手动实现构造函数。int val;Queue* q2;1.若类中有申请的资源需清理,需手动实现析构函数。如栈和队列2.不需手动实现析构函数:a.无资源清理,如:Data类b.数据成员内置成员资源无需手动清理,剩下都是自定义类型成员。如用两个栈模拟实现队列。

2024-04-26 22:46:15 738 1

原创 类和对象(一)

1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2.类声明放在.h文件中,成员函数定义放在.cpp文件中(即把成员函数定义在类外),注意:成员函数名前需要加类名::(指定函数属于的类)。int* a;public://声明void Stack::Init()//定义。

2024-04-19 12:13:39 615

原创 C++入门小语法

隔离开来,不影响生命周期-不同的域可以定义同名的。

2024-04-18 21:37:32 510

原创 快速排序(Hare版本)

每一趟排序,先选出key,将比key小的值排左边,比key大的值排右边,然后在子区间上重复此操作。如图: 定义key为第一个数,定义L和R两个值记录下标,R先走找到比key小的值停下,然后L再走找到比key大的值停下,然后交换L和R的值,重复过程直到L与R相遇,将key交换到相遇位置处。使得数组中的值:{小于等于key的值} key {大于等于key的值}。

2024-04-01 19:40:21 298 1

原创 C语言利用控制台实现贪吃蛇

游戏预览QQ录屏20240218160813。

2024-02-18 16:54:05 1086

原创 编译和链接

C语言源文件经过翻译环境(即编译和链接)处理为可执行程序输出结果,如图。

2024-02-13 21:56:01 549 1

原创 什么是文件及文件操作

文件是存储在某种长期储存设备或临时存储设备中的一段数据流,并且归属于计算机文件系统管理之下。所谓“长期储存设备”一般指磁盘、光盘、磁带等。从文件功能的角度来区分分为程序文件和数据文件。

2024-02-07 15:33:45 1192 1

原创 结构体和位段

结构体内存对齐是拿空间换取时间的做法设计结构体的技巧即满足对齐又节省空间:让占用空间小的成员尽量集中3.3修改默认对齐数使用“#pragma”预处理命令可改变编译器默认对齐数//设置为1//还原为默认。

2024-01-19 21:58:56 799

原创 数据在内存中的储存

整数的2进制表⽰⽅法有三种,即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,⽽数值位最⾼位的⼀位是被当做符号位,剩余的都是数位。如图1为整数32767的二进制表示方法图1.整数的二进制表示方法正整数的原、反、补码都相同。负整数的三种表⽰⽅法各不相同。:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。:将原码的符号位不变,其他位依次按位取反就可以得到反码。:反码+1就得到补码。如图2. -1的三种表示方法图2. -1的三种表示方法。

2024-01-15 20:01:34 1033 1

原创 字符串函数strlen,strcpy,strcat,strcmp等

在编程的过程中,我们经常要处理字符串,为了⽅便操作字符串,C语⾔标准库中提供了 ⼀系列库函数,此文章主要讲解strlen,strcpy,strcat,strcmp这几个使用频率极高的字符串函数。

2024-01-15 10:41:23 1029 1

原创 c语言深入理解指针(1)

指针 == 地址 == 内存单元的编号注1.内存被划分为一个个单元,一个单元大小是1字节。2.每个内存单元都给一个编号。

2024-01-08 20:45:25 802 1

原创 扫雷游戏(基础)

扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。本文用c语言实现扫雷游戏。

2023-11-05 17:54:36 196 2

原创 分支和循环(一)

语法:1.1单分支:1.2双分支:else隐含了对if(表达式)取反1.4if的嵌套注:1.if()后面只能跟一条语句,若想跟多条语句需要用 { } 框住。用 { } 框住的部分可视为一条语句。2.else 的配对:else 从自身由下往上找,与最近的、未配对的 if。注:1.switch后()内的表达式必须为整形表达式2.case后必须为整形常量表达式3.case只是入口,break用于跳出语句4.若有多个case输出相同可以 case 1:case 2:语句break;

2023-10-29 21:38:54 36

原创 关于c语言中%f和%lf不能混用的问题

故c语言中,不能因为%f和%lf都作为浮点数的占位符而混用。在scanf的时候%lf不能接收float类型的数据。同理%f不能接收double类型数据。

2023-10-14 11:00:40 189 1

原创 初写博客,请多指教

我将通过对基础知识的学习、自己写代码、分析别人的代码、参加竞赛来提升自己的编程能力。每周至少平均每天4小时的学习。我是月殇_木言是一名在校大一学生,喜欢看电影、追番、打游戏,现正在学c语言。我的目标:对流行的编程语言有大致了解,精通c++的使用。梦想是进入上海米哈游网络科技股份有限公司。

2023-10-12 13:58:21 72 1

空空如也

空空如也

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

TA关注的人

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