自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux杂货铺】3.程序地址空间

fork()函数在调用的时候子如果是子进程则返回0,如果是父进程则返回子进程的pid,在代码中我们分别在子进程和父进程读取全局变量g_val的时候居然出现了俩个不同的值。如下: 这个时候我们发现明明读取的地址相同为什么会读出俩个不同的值呢?既然读出了俩个值,说明这俩个值存在不同空间里,定然不可能地址相同,唯一的解释就是这个地址不是真实的地址。事实也正是这样,这里读取到的地址是虚拟地址,虚拟地址空间也就是程序地址空间的产物,接下来我们来看程序地址空间,以及虚拟地址的实现机制。

2024-07-13 00:10:16 810

原创 【C++精华铺】13.STL stack 和 STL queue 模拟实现

STL (Standard Template Library)是C++标准库提供的一套模板类和算法的集合,其中包含了许多常用的数据结构和算法,方便程序员使用和扩展。STL中的stack和queue是两种常用的容器适配器,可以通过使用不同的容器作为底层实现来提供不同的行为。STL提供的stack和queue适配器默认使用deque(双端队列)作为底层容器,也可以使用vector或list作为底层容器,根据实际需求选择不同的底层容器以满足性能和功能要求。这里我们用vector和queue作为底层容器。

2024-07-12 21:34:54 453 3

原创 【C++精华铺】12.STL list模拟实现

STL (Standard Template Library)是C++标准库中的一个重要组件,提供了许多通用的数据结构和算法。其中,STL list是一种带头双向链表容器,可以存储任意类型的元素。list的特点包括:双向性:list中的元素可以根据需要在前向和后向方向上进行遍历和访问。动态大小:list的大小可以根据需要动态增长和收缩,不像数组需要预先定义大小。高效的插入和删除:在list中插入或删除元素的操作非常高效,时间复杂度为常数时间。

2024-07-12 21:23:48 1521 4

原创 【Linux杂货铺】2.进程优先级

进程优先级是操作系统中用于确定进程调度顺序的一个指标。每个进程都会被分配一个优先级,优先级较高的进程会在调度时优先被执行。进程优先级的设定通常根据进程的重要性、紧急程度、资源需求等因素来确定。操作系统会根据进程的优先级来决定进程的调度顺序,通常会优先执行优先级较高的进程,以提高系统的整体性能和响应速度。不同的操作系统可能有不同的进程调度算法和优先级范围,但总体原则是根据进程优先级来安排进程的执行顺序。

2024-07-12 00:27:02 193 2

原创 【Linux杂货铺】1.环境变量

每一个可执行程序都会收到一张环境变量表,环境变量表是一个字符指针数组。

2024-07-11 23:18:12 341

原创 【C++精华铺】11.STL vector模拟实现

STL(Standard Template Library)是C++的标准库之一,提供了一系列的模板类和函数,用于实现常用的数据结构和算法。其中,STL的vector是一个动态数组,可以根据需要自动调整大小。vector可以存储任意类型的对象,并且可以在尾部插入和删除元素,还可以随机访问和修改任意位置的元素。它的实现使用了动态内存分配,因此在插入和删除元素时,可能会触发内存重新分配和数据拷贝,导致效率降低。vector提供了一系列的成员函数和操作符,用于操作和访问其中的元素。

2024-07-11 00:27:46 974 3

原创 【C++精华铺】10.STL string模拟实现

STL(标准模板库)是一个C++标准库,其中包括一些通用的算法、容器和函数对象。STL的容器是C++ STL库的重要组成部分,它们提供了一种方便的方式来管理同类型的对象。其中,STLstring是一种常用的字符串类型。STLstring是一个类,它封装了字符串的操作,并提供了一组成员函数。STLstring的实现使用了动态的内存分配技术,这意味着字符串的大小可以随时改变。STLstring还提供了一些高效的成员函数,例如substr、find、replace等,这些函数可以对字符串进行快速的操作。

2023-09-07 17:18:30 1976 64

原创 【C++精华铺】9.STL string

STL(Standard Template Library)库中的string类是一个字符串类,它提供了管理字符串的各种方法和功能。它是一个可变长度的字符序列,可以自动调整自身大小以适应字符串的长度变化。在之前我们操作字符串都是通过自己去实现相关的函数来进行操作,而且稍不留神就会内存泄漏,在C++中我们更倾向于使用string类来完成和字符串相关的操作。使用string类相比于使用C语言的字符串有以下优点:更加安全:C语言的字符串没有自带长度信息,容易造成内存越界等安全问题。

2023-08-25 23:32:56 1483 75

原创 【C++精华铺】8.C++模板初阶

什么是泛型编程?泛型编程是避免使用某种具体类型而去使用某种通用类型来进行程序编写的方式,依次来复用某段代码而避免大规模功能相似重复冗余的代码。下面的代码如果想用泛型编程该如何实现。马云有次说了这么一句话:“世界是懒人创造的,懒不是傻懒,如果你想少干,就要想出懒的方法。要懒出风格,懒出境界。”C++必然也是有风格有境界的,所以C++中设计了实现了泛型编程。

2023-08-17 18:11:55 1547 76

原创 【C++精华铺】7.C++内存管理

C++继承了C语言的内存管理方式,但是C语言的内存管理方式在C++中显得心有余而力不足,在涉及内存管理的自定义类型的内存释放上就显得无能为力。C++引入了new/delete和new T[]/delete[]的内存管理方式。

2023-08-15 02:55:00 872 49

原创 【C++精华铺】6.C++类和对象(下)类与对象的知识补充及编译器优化

构造函数的初始化列表及其行为、static成员(函数,变量)、友元(函数,类)、内部类、匿名对象、对象拷贝时的编译器优化

2023-08-12 00:20:09 799 33

原创 【C++精华铺】5.C++类和对象(中)类的六个默认成员函数

我们想到空类的时候肯定想到的是里面什么都没有的类称之为空类,但是事实却并非如此。当一个类里面什么都不写的时候编译器会默认生成六个默认成员函数来完成一个类的基本功能。构造函数:对象初始化工作。析构函数:空间清理工作。拷贝构造和赋值运算符重载:对象的拷贝复制工作。取地址和const取地址重载:一般很少自己实现,除非需要给用户返回指定的特殊的地址。

2023-08-10 09:00:00 1234 30

原创 【C++精华铺】4.C++类和对象(上)面向对象、类、this指针

class为定义类的关键字,{}中的内容为类的类体,里面定义的内容称之为成员,类中的变量称之为类的属性或者类的成员变量,ClassName为类名,并且大括号后面的分号”;“一定不能省略。//类体类有俩种定义方式:声明和定义全部放在类体中(成员函数在类体中定义,编译器可能会将其作为内联函数处理)class Datepublic://private:int _year;int _month;int _day;类声明放在.h文件中,成员函数定义在.cpp文件中(成员函数前要加上。

2023-08-06 23:58:22 265 21

原创 【C++精华铺】3.C++入门 引用(const)、内联函数

以值作为参数或者返回类型,在传参和返回的期间,变量不会直接传递实参或返回变量本身,而传递的是实参或者变量的一份临时拷贝,如果需要拷贝的类型特别大的时候,效率是极低的。常引用就是const关键字修饰的引用,但是我们在使用常引用是会遇到各种报错,其实就是权限放大缩小的问题,所谓权限就是是否具有读或者写的权力,在C++中引用支持权限缩小但不支持权限放大。,与传统的定义变量不同,传统的定义变量是新开一份空间来存储数据,而引用则是给一个已经存在的空间起一个别名,它和引用的变量共用同一份空间。

2023-08-06 20:39:08 384 8

原创 【C++精华铺】2.C++入门 缺省参数、函数重载

含有缺省参数的函数在声明的时候要注意声明的时候定义和声明如果是分开的话缺省参数必须写在声明里。

2023-08-03 20:37:30 107 1

原创 【C++精华铺】1.C++入门 namespace命名空间、初识iostream标准流

c++命名空间和标准输入输出的介绍

2023-08-03 16:49:57 128

原创 【C++11】 统一的列表初始化( {}初始化 )

c++11为了统一初始化方式引入了列表初始化方式,也就是使用{}对变量或者结构体变量等进行初始化。本文会以简单的语言介绍c++11的列表初始化方式和std::initializer_list。

2023-07-22 23:15:05 279

原创 空间复杂度和时间复杂度

当我们在研究一个算法是不是一个优秀的算法时,我们应该如何去评判它。难道真的就是代码越短越好吗?比如下面的斐波那契数列就并不是一个很好的算法,虽然很简洁。当我们判断一个算法的好坏的时候,通常要从时间和空间俩个维度去衡量,也就是时间复杂度和空间复杂度。

2022-11-04 21:19:29 258 6

原创 指针函数和函数指针 函数指针数组 回调函数

我们经常使用的函数定义的方式是(类型名 标识符 (形参列表) {函数体})指针函数的定义其实也并无不同,我们定义的方式也是(类型名 标识符 (形参列表) {函数体})只不过使用的是指针类型。int* ret(int x,int y) {} 或者 int *ret(int x,int y) {}怎么去写看个人习惯,并无区别。这么看来其实也是比较简单,和普通函数的定义并没有什么大的区别,也就是多了一个* ,仅此而已。

2022-10-24 02:15:00 284 37

原创 指针数组和数组指针

指针数组其实就是存放指针的数组,数组中的每一个元素都指向一个地址。int* (类型名) p(变量名)[数组大小];//整形指针的数组//一级字符指针的数组//二级字符指针的数组在我们定义指针的时候,我们都是在变量名前面加上一个 * 号,数组指针也是类似的定义模式。int main(){//定义一个指向长度位10的整型数组的指针//解释:p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为10个整型的数组。所以p是一个//指针,指向一个数组,叫数组指针。

2022-10-18 16:46:08 642 14

原创 C语言数据(整型和浮点型)在内存中的存储

本文深度且详细的介绍了整型和浮点型的存储方式(大小端存储,原反补码,浮点数的IEEE 754规定等等)摘要:首先,E为一个无符号整数(unsigned int)这意味着,如果E为8位,它的取值范围为0~255;如果E为11位,它的取值范围为0~2047。但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数127;对于11位的E,这个中间数是1023。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+1

2022-10-16 20:51:42 357 12

原创 C语言动态内存分配

我们熟知的内存开辟方式有两种:第一种便是通过等关键字为变量开辟空间;第二种便是通过开辟一段连续的空间。这样开辟的空间很局限:1. 空间开辟大小是固定的。2. 数组在声明的时候,必须指定数组的长度,它所需要的内存在编译时分配。动态内存分配所开辟的空间在堆区,并且是可以扩容的。

2022-10-16 16:03:52 835 11

原创 字符函数和字符串函数详解(三)strerror memcpy memmove memset memcmp(及部分字符分类函数)

这一期主要介绍打印错误信息的函数和内存操作函数,简单介绍一下字符操作函数(可熟练使用就行)

2022-09-27 17:48:52 305 5

原创 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

这一系列专门做c语言中的字符和字符串函数的使用教程,和常遇见的相关错误的原因和规避错误要注意的要点。(第二期:strncpy strncat strncmp strstr strtok)

2022-09-26 19:49:19 529 12

原创 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp

这一系列专门做c语言中的字符和字符串函数的使用教程,和常遇见的相关错误的原因和规避错误要注意的要点。(第一期:strlen strcpy strcat strcmp)

2022-09-10 17:28:26 871 7

原创 C语言static关键字修饰变量及函数时的用法和原理

存储在静态区的变量出了作用域不会销毁,静态变量的生命周期就是程序的生命周期,程序结束的时候,静态变量才会被回收空间。

2022-07-18 11:36:52 3117 1

原创 C语言中局部变量与全局变量的区别及其同名时的优先级

在C语言中,按照变量的作用域将变量分为和顾名思义,即在定义的变量,函数的形式参数也称为局部变量;同名时

2022-07-15 16:34:46 6997 1

空空如也

空空如也

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

TA关注的人

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