自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一篇文章讲解(C语言复习):函数栈帧的创建和销毁

在写C语言代码的时候,我们经常会把一个独立的功能抽象为函数,所以C程序是以函数为基本单位的。那函数是如何调用的?函数的返回值是如何待会的?函数参数又是如何传递的?这些问题都和函数栈帧有关系。首先我们来看一下函数栈帧的概念:函数栈帧(stack frame)就是函数调用过程中在程序的调用栈(call stack)所开辟的空间(这里是一个很重要的知识点: 调用函数的时候,都会在栈上开辟空间函数参数和函数返回值临时变量(包括函数的非静态的局部变量以及编译器自动生产的其他临时变量)

2024-07-27 21:46:38 679

原创 C++模板初阶

class 类模板名// 类内成员定义public:{}private:T* _a;int _top;

2024-05-06 18:24:24 848 2

原创 C&C++内存管理

各位老铁,C++部分的类与对象咱们上篇博客就已经全部聊完了,从这篇博客开始咱们进入到一个过渡阶段—内存管理、模版,为C++后面又一重头戏string、vector、STL等做准备,话不多说,一起学起来吧~申请自定义类型的空间时new会调用构造函数delete会调用析构函数而malloc与free不会。int _val;int _val;通过监视窗口我们也可以看到在申请自定义类型空间时,new通过调用构造函数完成节点的初始化。

2024-05-01 22:33:46 807 7

原创 C++类与对象下: 友元 && 内部类 && 深化理解封装

不属于任何类,

2024-04-22 21:36:58 1038 5

原创 C++类与对象(下篇):再谈构造函数 && static成员

然后这里我们在这里不写,_aa会初始化吗?

2024-04-20 22:15:08 903 1

原创 C++:日期类的实现 && const修饰 && 取地址及const取地址操作符重载(类的6个默认成员函数完结篇)

成员函数如果是一个对成员变量只进行读访问的函数,一般加上const,这样const对象和非const对象都可以访问成员函数如果是一个对成员变量进行读写访问的函数,不可以加上const,因为不能修改成员变量const对象可以调用非const成员函数吗?> 不可以(权限放大)非const对象可以调用const成员函数吗?> 可以(权限缩小)const成员函数内可以调用其它的非const成员函数吗?> 不可以(权限放大)非const成员函数内可以调用其它的const成员函数吗?

2024-04-06 15:37:39 903 3

原创 C++:类的6大默认成员函数:赋值运算符重载

赋值运算符重载格式参数类型:const T&,传递引用可以提高传参效率返回值类型:T&,返回引用可以提高返回的效率,有返回值目的是为了支持连续赋值检测是否自己给自己赋值返回*this :要复合连续赋值的含义赋值运算符只能重载成类的成员函数不能重载成全局函数class Datepublic:_day = day;int _year;int _month;int _day;if (&left!

2024-03-30 18:59:06 1165 4

原创 C++:类的6大默认成员函数(拷贝构造函数篇)

拷贝构造函数::**只有单个形参**,该形参是对本类类型对象的引用(一般常用const修饰),在**用已存在的类类型对象创建新对象时由编译器自动调用。**

2024-03-18 23:16:39 882 2

原创 C++:类的6大默认成员函数(析构函数篇)

但是像顺序表、链表、二叉树、栈这类,不调用析构函数就会像C语言中我们忘记destroy一样,导致空间泄露。上篇博客我们聊到了构造函数,我们知道一个对象是怎么来的,那一个对象又是怎么没的呢?5.默认生成的析构函数与构造函数类似,内置类型不做处理,自定义类型去调用它的析构。

2024-03-12 22:56:57 355 1

原创 C++:类的6大默认成员函数(构造函数篇)

int _month;int _day;d1.Print();Date d2;d2.Print();return 0;对于Date类,可以通过 Init 公有方法给对象设置日期,但如果每次创建对象时都调用该方法设置信息,未免有点麻烦(而且容易忘记),那能否在对象创建时,就将信息设置进去呢?

2024-03-05 22:44:28 391 2

原创 C++this指针学习分享

1.this指针的类型:const*,即成员函数中,不能给this指针赋值。(这里回忆下C语言const用法:const位于 * 前,表示指针指向的内容不可修改;const位于 * 后,表示指针本身不能被修改)2.this指针本质上是“成员函数”的形参,当对象调用成员函数时,将对象地址作为实参传递给this形参。所以对象中不存储this指针。3.this指针是“成员函数”第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递。

2024-03-03 22:27:20 790

原创 C++内存对齐

在这里我们可以发现sizeof(A)\sizeof(B)并不是简单地sizeof(char)+sizeof(int),那么一个结构体的大小到底是怎么计算的呢?4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。首先我们一起来看看结构体内存对齐的规则,掌握了规则才能更好地解决结构体大小计算的问题。2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。我们还要特别注意一点: 对齐数 =VS中默认的对齐数为8。

2024-02-26 21:51:21 360 1

原创 C++类与对象(上)

类的所有成员都在类的作用域中。

2024-02-17 22:33:48 921 1

原创 C++入门收尾(nullptr)|类与对象引入

在C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数。所以我认为完全可以说类就是C++在结构体的基础上对结构体的升级产品。// 类体:由成员函数和成员变量组成 };// 一定要注意后面的分号class为定义类的关键字ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。(要注意与结构体之间的区别)类体中内容称为。

2024-02-14 17:04:45 1086 1

原创 C++入门篇零基础梳理(三)引用|内联函数|auto关键字

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。比如你的名字是"李华",在家父母可能叫你"小华",你的好兄弟可能称呼你"华子";尽管称谓不同,但都是指你一个人,我们C++中的引用大致就是这个意思。好的,了解完引用概念之后,我们一起来看看具体用法:类型& 引用变量名(对象名) = 引用实体;这里要注意一点:引用类型必须和引用实体是同种类型的。a、引用特性:b、常引用(常数引用)1.3 使用场景1.做参数2.做返回值然

2024-02-03 22:31:25 766 1

原创 顺序表和链表从零详细梳理(单链表篇)

可链表就不同了,它是多次malloc出来的空间(同样要贷款10w,链表贷款多次,每次还对应次数的就行了,不违反规则)。b.空间满了只能扩容,而扩容存在浪费,且扩的越多,浪费得越多(比如有一个100的空间满了,扩到200,但只需要插入120的数据,那就造成80空间的浪费);

2024-01-28 23:06:03 874

原创 C++入门篇零基础梳理(二)缺省参数|函数重载

嘻嘻,中午好啊各位,午饭过后浅浅来总结下缺省参数和函数重载的知识点吧~~

2024-01-25 13:27:44 900

原创 C++入门篇零基础梳理(一)|命名空间|输入输出

这里定义命名空间的关键字是namespace,bit就是我们自己定义的命名空间的名字。// bit是命名空间的名字,一般开发中是用项目名字做命名空间名。// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。

2024-01-23 22:48:27 932 1

原创 顺序表和链表从零详细梳理(顺序表篇)

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

2024-01-22 22:10:02 1026

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

注意:函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译期间已经确定好了,分析:递归调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间。空间复杂度为O(N)分析:该例子使用了常数个额外空间,根据大O渐进表示法,所以空间复杂度为 O(1)。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以。因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定。分析:动态开辟了N个空间,空间复杂度为 O(N)空间复杂度计算规则基本跟实践复杂度类似,

2024-01-19 21:58:00 372 1

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

时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知。在实际中一般情况关注的是算法的最坏运行情况,所以数组中搜索数据时间复杂度为O(N)即:找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。此实例基本操作执行了M+N次,有两个未知数M和N,因此时间复杂度为 O(N+M)

2024-01-18 22:56:07 399

原创 Linux|发展史|安装|初识指令

作为一名合格的编程学习者,学习一门课程,首先要对其来源、形成、发展有一个较为清楚的认识。要说Linux,还得从UNIX说起。UNIX 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。

2023-11-25 23:32:31 365

原创 编程小白的自我介绍

我是一名准大二的学生,现就读于安徽的一所双非一本,本身就读的本科专业与计算机编程并无太多瓜葛,但出于对编程的喜爱或者说是好奇吧,我很愿意拿出大约70%的课余时间(约12小时)来了解计算机编程,并为之坚持,从根本去提升自己的硬实力。对于学习编程的目的,我想去到腾讯、字节这样的大厂工作。对于目前还是小白的我来说,这一切都可谓是路漫漫其修远兮。但此刻我将以此为梦的起点,相信时间的力量,小白也能成就大牛(不行成为大白也行,哈哈)。

2023-07-13 11:42:32 59 1

空空如也

空空如也

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

TA关注的人

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