自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++之--初见模板初阶

template class 类模板名 { // 类内成员定义 };class 类模板名// 类内成员定义模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误。

2024-11-02 17:07:15 274

原创 C/C++内存管理

如果申请的是内置类型的空间,new和malloc,delete和free基本类似,不同的地方是: new/delete申请和释放的是单个元素的空间,new[]和delete[]申请的是连续空间,而且new在申请空间失败时会抛异常,malloc会返回NULL。6. 申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,而new 在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理释放。

2024-11-02 16:29:03 852

原创 C++ -- 再探类和对象

之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅ 式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成 员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其 他地⽅都⽤不了。

2024-11-02 15:44:19 609

原创 运算符重载详解,日期类型的实现

重载>时 ,需要重载为全局函数,因为重载为成员函数,this指针默认抢占了第⼀个形参位 置,第⼀个形参位置是左侧运算对象,调⽤时就变成了 对象

2024-11-02 00:00:29 394

原创 c++初识类和对象,类的定义

1、类定义格式class dogpublic:_age = age;class为定义类的关键字,dog为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,方便辨识。如成员变量前⾯或者后⾯加_ 或者 m 开头,注意C++中这个并不是强制的,只是⼀些惯例。

2024-11-01 10:30:05 525

原创 初识C++--C++入门

引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间, 它和它引⽤的变量共⽤同⼀块内存空间。类型& 引⽤别名=引⽤对象;int& b = a;b = 3;return 0;这里我们对a和b取地址,可以看到,两者的地址是一样的,这也印证了引用与被引用的对象使用的是同一块地址。

2024-10-18 13:22:47 948

原创 常见的排序小结

将已有序的子序列合并,得到完全有序的序列;3. 希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些树中给出的 希尔排序的时间复杂度都不固定:因为咋们的gap是按照Knuth提出的方式取值的,而且Knuth进行了大量的试验统计,我们暂时就按照:O(n^1.25) 到O(n^1.25) 来算。基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排 序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。

2024-09-23 22:40:36 711 1

原创 归并排序——递归以及非递归

在上面的代码中,如果细细观察的话,可以发现是现将数组分割至最小,左边排好后,在排右边。由于是非递归,我们需要标记一个gap,作为数组的分割依据。归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;其中重要的思想就是将初序列分割成一个个子序列,只要子序列有序后。在此,我们借用一个新的数组来存储有序子序列——tmp。即先使每个子序列有 序,再使子序列段间有序。

2024-09-20 22:03:09 336

原创 栈和队列详解

队列是先进先出,嗯,嗯,嗯~栈是先进后出,假设入了三个数据1,2,3,再出一次(都是按照栈的顺序),也就是3,2,1,假设按照出的顺序再入到另一个栈中,也就是,,,,3,2,1了!,这有两个队列,那我们把其中一个队列用作“入数据n个”,另一个先空着,当需要出数据时,按照上面的思路,我们需要保留一个数据在队列中,那么将有数据的队列调整成只有一个数据不就好了!队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数 组头上出数据,效率会比较低。出栈:栈的删除操作叫做出栈。

2024-07-22 22:09:46 667 8

原创 程序编译和链接

程序同时也可以使⽤静态(static)内存,存储于静态内存中的变量在程序的整个执⾏过程 ⼀直保留他们的值。并且包含的头⽂件都被插⼊到.i⽂件 中。• 处理#include 预编译指令,将包含的头⽂件的内容插⼊到该预编译指令的位置。将源代码程序被输⼊扫描器,扫描器的任务就是简单的进⾏词法分析,把代码中的字符分割成⼀系列的记号(链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。• 注:在Windows环境下的⽬标⽂件的后缀是 .obj ,Linux环境下⽬标⽂件的后缀是 .o。

2024-04-16 09:13:28 524

原创 文件及文件操作

磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。程序文件:程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。数据文件:⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或 者输出内容的⽂件。文件名: ⼀个⽂件要有⼀个唯⼀的⽂件标识,以便⽤⼾识别和引⽤。⽂件名包含3部分:⽂件路径+⽂件名主⼲+⽂件后缀。

2024-04-14 22:52:20 1792 1

原创 自定义类型:结构体

C语⾔已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类 型还是不够的,还有一些类型并不是单一的,而是需要多种内置类型才能实现的。于是,C语⾔增加了结构体这种⾃定义的数据类型,让程序员可以⾃⼰创造适合的类型。结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量,如: 标量、数组、指针,甚⾄是其他结构体。

2024-04-05 22:32:32 584 1

原创 strlen strcpy strcat strcmp strncpy strncat strstr strtok等函数的使用及简单模拟

strlen是C语言中的的一个库函数,包含在头文件string.h中。strlen被用来求字符串的长度,统计的是‘\0’之前的字符个数。返回值size_t,无符号整数,意为字符串的长度是一个正整数。strcpy()包含在头文件string.h中,str-代表是字符串,cpy-是copy(复制)的意思,原型char* strcpy(char * destination, const char * source );

2024-03-19 17:30:32 1747 1

原创 指针没学好,点开文章,带你重新学习指针!

规避野指针:1.初始化指针,如果明确知道指针指向哪⾥就直接赋值地址,如果不知道指针应该指向哪⾥,可以给指针赋值NULL. NULL 是C语⾔中定义的⼀个标识符常量,值是0,0也是地址,这个地址是⽆法使⽤的,读写该地址 会报错。指针指针难道是针吗?哈哈哈,当然不是,有一种更加好理解的说法,就是内存的地址,它可以指向目标内存的位置,方便我们使用,就像一栋楼,每个房间都有一个门牌号,方便我们去寻找。从上图可以看出,*p是等价于a的,*p 的意思就是通过p中存放的地址,找到指向的空间, *p其实就是a变量了;

2024-03-17 23:10:11 1843 1

原创 数组名的理解

1、sizeof(单独数组名,不进行其他操作),数组名表示整个数组,计算的是整个数组的大小,单位为字节。名词解释:数组名,顾名思义,就是数组的名字。本质上是数组的首元素的地址。2、&数组名,数组名表示整个数组,取出的是整个数组的地址。arr[0]表示首元素的地址,而这的首元素是第一行。除此之外,所有的数组名都是指数组首元素的地址。二维数组在内存中是连续存放的。但对于二维数组来说有一点不同。

2024-03-16 23:13:37 182

原创 strlen和sizeof两个函数的用法及区别

"在这个字符串的末尾是有意隐藏的\0的,但是如果用下图方式定义字符串,则可能出现访问越界,从而打印随机值。区别3:strlen关注内存中是否有\0,\0是作为字符串的结束标志,如果没有\0,就会持续往后找,可能会造成越界。区别2:strlen是用于求字符串的长度的,操作对象是有要求的,得是字符串,而sizeof用与求操作数所占字节的大小,操作数任意,单位是字节;所以,对于同一个字符串,strlen找到\0就停止了,并计算\0之前的长度,而sizeof计算字符串所占字节的大小,包含了字符'\0'。

2024-03-16 22:42:26 201 1

原创 交换两个数的内容并且不创建新变量

但是只明显是借助了第三变量c来实现的,并不符合题目的要求,在此,引入一个位操作符“先看一组例子,来帮我们更好的理解接下来的操作!到此,就完成了不创建第三变量完成两数的交换!”,来帮我们实现代码。

2024-01-27 16:16:58 190

原创 位操作符&、|、^ 的介绍及常见使用

目标操作符:&(按位与)、|(按位或)、^(按位异或)使用:将两个数的内容惊醒交换并且不创建新变量。使用:一个数的二进制中1的个数。注意:位操作符操作的都是整数。“有0则0,全1则1”“有1则1,全0则0”“相同为0,不同为1”

2024-01-27 15:29:07 473

原创 C语言分支和循环语句简谈

但由于还很模糊,也不能很好地总结,所以简单说说吧,实际上就是吧我们平常的以携判断假设和一些简单的循环进行表达,if语句可以进行判断,如果满足条件则可以执行它的操作,反之也有else所提供的方案,由于不太会使用这个,不知道怎么贴图,就口头表述好了。switch也是一个用于判断的,用case+数字进行不同情况的假设,满足就执行,不满足用break返回就好了。实在不知道有什么表述的,最近又到了期末,以后有机会、时间,我再细说。主要包含if、switch、while、for、do-while这几个。

2023-12-07 00:03:33 378

原创 我的编程路--开始

我当前的目标,希望可以满足自己的兴趣并同时掌握一门技术,在一定时间内学到一定的知识,再慢慢发展,逐渐掌握编程这第三语言。由于我的专业并没有这方面的课程,所以只能是自学、上上网课看看书了。大学的自由时间还算多,一周抽个二三十个小时还是可以的,多花时间,慢慢来,总是可以的。如果有机会的话,当然也想去腾讯、华为这些公司看看了。我现在刚大一,进入了一个新的环境。对未来还有很多的期望,也第一次接触了编程,C语言很神奇,让我可以与电脑交流,把一串串陌生的规律符号翻译成另一种画面。printf("你好,未来!

2023-11-20 11:31:20 51 1

空空如也

空空如也

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

TA关注的人

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