自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ | string详解

其中提一下第三种,pos为子串的位置,len子串的长度,若len大于从子串pos位置开始后面字符总数,则表示初始化到子串结尾即可,比如我们要用 “hello world” 初始化字符串,若pos为6,len为20,则用world初始化字符串s1;由于各国语言的差异,可能存在一个字节不能够一一对应文字的情况,不像英文由26个英文字母组成单词,只需保存26个字母即可,而实际上许多国家的语言并不能由一字节的空间能表示出来,因此由不同储存方式繁衍出了 UTF-8、UTF-16、UTF-32,其中数字代码比特位;

2024-05-13 17:31:51 503

原创 二叉树与堆

树:树与前面的顺序表、单链表不一样,树是一个非线性结构,它可能存在着1对多的情况,不想线性表那样具有一对一的关系;

2024-04-02 21:23:38 982

原创 进阶--栈和队列(1)

压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头。采用顺序存储的栈称为顺序栈,它利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时附设一个指针(top)指示当前栈顶元素的位置。队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数。

2024-03-29 17:49:11 258

原创 顺序表(休息)

今天不想写,专心学习。

2024-03-18 22:57:14 123

原创 顺序表的插入

代码解析将数据存在x中判断i的位置是否合法,和判断表是否已满。若插入的位置为当顺序表的最后,则直接插入若插入的位置不为最后一位则从最后一位开始各向后移一位最后将x插入,并将表长+1插入过程图示

2024-03-17 23:15:45 149

原创 链表--基础概念

一、链表的概念定义:链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构。特点:链表由一系列节点(链表中每一个元素称为节点)组成,节点在运行时动态生成 (malloc),每个节点包括两个部分:一个是存储数据元素的数据域另一个是存储下一个节点地址的指针域。

2024-03-16 20:49:37 236

原创 顺序表--查找数据

顺序表要预先分配空间,会导致空间闲置或溢出,采用随机存取,时间复杂度为O(1),但删除和插入要一项一项的移动,时间复杂度为O(n)。

2024-03-15 19:23:51 175

原创 数据结构--顺序表插入与删除

顺序表的删除与插入差不多,区别就在于插入是往后移,而删除是往后移。根据需求,也可以用一个Boox *来保存删除的数据。

2024-03-14 23:07:26 231

原创 进阶--复杂度讲解(数据结构)

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。1.2衡量算法好坏的标准这是一个通过函数递归算法实现斐波那契数列的代码你认为这样的算法是否好呢?让我们带着疑惑来阅读本篇文章,相信你读完后一定会对此算法有所理解,也希望你能有所收获。当我们写完的算法代码被编译成指令后运行程序,这期间必定消耗了时间和空间(内存空间)。通常衡量一个算法的好坏是以时间维度和空间维度这两个标准来衡量的。

2024-03-13 21:47:27 834

原创 文件缓冲区

ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序 中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装 满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓 冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根 据C编译系统决定的。因为有缓冲区的存在,C语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文 件。

2024-03-11 23:26:12 220

原创 进阶--联合

联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。

2024-03-10 12:00:00 249

原创 进阶--枚举

以上定义的 enum Day , enum Sex , enum Color 都是枚举类型。{}中的内容是枚举类型的可能取值,也叫 枚举常量。这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。

2024-03-09 12:00:00 127

原创 进阶--回调函数

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个 函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数 的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进 行响应。注意:这里第一次使用 void* 的指针,讲解 void* 的作用。使用回调函数,模拟实现qsort(采用冒泡的方式)。

2024-03-08 12:00:00 110

原创 进阶--指针的进阶(字符指针和指针数组)

特别容易让人以为是把字符串 hello bit 放到字符指针 pstr 里了,但是/本质是把字符串 hello bit. 首字符的地址放到了pstr中。在《指针》章节我们也学了指针数组,指针数组是一个存放指针的数组。这里我们再复习一下,下面指针数组是什么意思?代码 const char* pstr = "hello bit."在指针的类型中我们知道有一种指针类型为字符指针 char*;

2024-03-07 22:55:10 178

原创 进阶--宏的定义

宏可以看作为一些命令的集合。它是一种预处理器指令,在预编译阶段将宏名替换为后面的替换体。而#define可以用来定义宏:#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。宏的声明方式:我们执行下面这段代码:他的实际执行结构为6+1*6+1->即为13这说明了什么?这印证了上面所说的宏是把参数替换到文本中,也就是宏直接吧6+1替换掉了x直接带入了后面的表达式当中了!对此,根据我们原来的用意。

2024-03-06 23:11:33 346

原创 进阶--文本和二进制

牢记:在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘占5个字节(每一个字符一个字节),而二进制形式输出,则在磁盘上只占4个字节。字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。因为有缓冲区的存在,C语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文件。如果不做,可能导致读写文件的问题。

2024-03-05 20:56:37 279

原创 进阶--柔性数组

例如:

2024-03-04 16:21:42 127

原创 进阶--动态内存管理

有时候我们需要的空间大小在程序运行的时候,数组的编译时开辟空间的方式不能满足。这个时候只能尝试动态内存开辟了。c语言提供了另外一个函数free,专门是用来做动态内存释放和回收发,函数原型如下:

2024-03-03 17:31:40 152

原创 进阶--位段

例如冒号后的数字表示所需的空间,a要2bit,b要5bit。那么为什么怎么少呢?因为实际在写代码时有一些变量的值,取值不多,如int flag表示真假,取值就只有1 or 0。所以得出,位段是可以节省空间的。A就是一个位段类型,那么位段A的大小是多少呢?结果如下:举个例子上图中字节不够,便是以4个字节为单位进行开辟的,上图也可以看出有15个字节被浪费,那么同时再举个例子,看看是如何分配内存空间的。如果上图有空余1bit被利用那么是不是只用两个字节,那么最后的结果究竟是3字节还是2字节呢?

2024-03-02 12:35:22 283

原创 进阶--结构体

但需要注意的是,对齐会增加一定的开销,例如填充字节需要占用内存空间,所以如果结构体中数据成员的大小很小,对齐带来的好处可能会被抵消。结构体的自引用指的是结构体类型中包含一个指向自身类型的指针成员变量。常见的对齐规则是按照数据类型的大小进行对齐,在结构体中,如果一个数据成员的大小小于对齐值,则会在该数据成员后填充一定的字节,使得下一个数据成员能够按照对齐值对齐。4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整 体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。

2024-03-01 22:24:13 469

原创 进阶--字符串函数

strcat函数将字符串source追加到字符串destination后面,并用空字符终止字符串。字符串source的初始字符覆盖字符串destination的终止空字符。复制或附加字符串时不执行溢出检查,如果源字符串和目标字符串重叠,strcpy行为是未定义的。字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0')(1)第一个字符串大于第二个字符串,则返回大于0的数字。(3)第一个字符串小于第二个字符串,则返回小于0的数字。

2024-02-29 22:24:57 884

原创 进阶--字符串函数

在my_strlen中用count统计字符的个数,我们传入的char类型的指针str,对他进行解引用(*str)得到str指向的值,循环判断(*str)是否等于‘\0’,如果不等,则count+1,str指向下一个字符;如果相等,则说明遍历到了字符串结尾,最后返回count,也就是统计的字符的个数。1、存在限制条件,当满足这个限制条件的时候,递归便不再继续。根据这个特性,我们可以有一种新的求字符串长度的思路。方法三:不创建临时变量计算字符串长度(递归)两个指针相减,得到的是两个指针之间元素的个数。

2024-02-28 22:33:51 167

原创 指针进阶--函数指针

上图中,我们把一个函数的地址存入一个函数指针,对函数指针截用,先找到函数,上图可看出,&a地址,存放于pa,这样做有什么用呢?当我们把地址存放于pa时,当我们需要。然后调用,传参了调函数的传参,

2024-02-27 23:13:13 195

原创 指尖进阶--数组指针

对指针进行加法(减法)运算时,它前进(后退)的步长与它指向的数据类型有关,p 指向的数据类型是int [4],那么p+1就前进 4×4 = 16 个字节,p-1就后退 16 个字节,这正好是数组 a 所包含的每个一维数组的长度。*(p+1)单独使用时表示的是第 1 行数据,放在表达式中会被转换为第 1 行数据的首地址,也就是第 1 行第 0 个元素的地址,因为使用整行数据没有实际的含义,编译器遇到这种情况都会转换为指向该行第 0 个元素的指针;4) *(*(p+1)+1)表示第 1 行第 1 个元素的值。

2024-02-27 21:31:29 743

原创 数据存储与类型

只要是小数就可以使用浮点型,flaot 的精度低,存储的数值范围较小,double的精度高,存储的数据范围更大。大端模式,指数低位保存在内存高地址中,而数据的高位保存在内存的低地址;小端模式,指数低位保存在内存低地址中,而数据的高位保存在内存的高地址。两部分,符号位用“0”表示正,用“1”表示负,而数值位正数的。计算机中的整数有三种2进制表示方法,即原码,反码,补码。反码:原码的符号位不变,其他位按取法得的就是反码。2.负的整数,原码,反码,补码是需要计算的。1.正的整数,原码,反码,补码相同。

2024-02-26 17:28:19 326 1

空空如也

空空如也

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

TA关注的人

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