自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++复习第6篇

​ 1、当遇到问题时,先查看现有的类是否能解决一部分问题,如果有则继承该类,并在此基础上扩展以此解决问题,从而缩短解决问题的时间(代码复用)​ 2、当遇到一个大而复杂的问题时,可以把大问题拆分成若干个不同的小问题,然后为每个小问题设计一个类来解决,最后通过继承的方式把这些类汇总到一个类中,从而解决大问题,以此降低问题的难度,可以同时让多个程序员共同解决大问题​派生类继承基类 子类继承父类。

2023-10-13 10:51:16 74

原创 C++复习第5篇

​ C++语法要求重载new运算符函数的参数必须为size_t,编译器会帮助计算出要申请的字节数并传递,返回值必须为void*,编译器会帮助转换成对应的类型指针返回。​ 如果只是针对某个类想要重载它的new\delete,则谢伟成员函数,如果想要所有类型都执行重载版本,则实现全局函数。注意:()[]均不能实现为全局运算符函数,只能实现成员函数(C++全局中已经有类似的函数实现,所以不让实现)​ 重载这两个运算符可以让类对象像指针一样使用,智能指针就是通过这两个运算符从而像使用指针一样的类。

2023-10-13 10:50:45 79

原创 C++复习第四篇

先将原对象的数据存储到临时变量中,接着在原对象基础上自变,然后把临时变量以只读方式返回,并且该临时变量执行语句结束后立即销毁了,无法访问,因此结果是右值。由于

2023-10-10 18:46:36 80

原创 C++复习第三篇

​ 在C++结构体中可以定义成员函数,并且默认由四个隐藏的成员函数(构造、析构、拷贝构造、赋值),当对象去调用成员函数时,需要传递对象的地址给成员函数,这种机制就要求结构对象需要在内存中有一席之地,所以如果结构没有任何的成员变量,编译器结构至少拥有1字节不使用的内存,让上面这套机制自恰。​ 2、当对象调用成员函数时,编译器会自动把对象的地址传递给该成员函数,也就是说普通成员函数都有一个隐藏的参数,该参数名字叫做this指针,this指针用来接收调用对象的地址。不具有常函数的对象都可以调用。

2023-10-10 18:46:05 44

原创 C++复习第二篇

​ 内联函数也会被翻译成二进制指令,但调用语句不会生成跳转指令,而是直接把内联函数的二进制指令进行替换,就没有跳转和返回,而是直接执行二进制指令,这种函数称为内联函数。​ 当调用函数时,编译器会优先调用类型最匹配最精确的版本函数,如果没有最正确的,则会先做类型转换后再匹配,但如果没有进行类型转换匹配的版本最后也会报错。​ 因为通过C++编译器编译函数、调用语句时,会变成换名后的名字,但是项目中有可能需要去调用C编译器编译好的函数,它们是没有换名的,因此会调用失败。

2023-10-10 18:45:32 21

原创 C++复习第一篇

b、结构中可以有成员是成员函数、成员变量,结构变量、结构指针使用 . 和 -> 访问成员,如果是成员函数,那么可以直接访问同结构中的任何成员,不需要.和->b、联合中可以有成员是成员函数、成员变量,联合变量、联合指针使用 . 和 -> 访问成员,如果是成员函数,那么可以直接访问同联合中的任何成员,不需要.和->c、结构中有一些隐藏的成员函数:构造函数、析构函数、拷贝构造、赋值操作。c、联合中有一些隐藏的成员函数:构造函数、析构函数、拷贝构造、赋值操作。d、结构可以继承其它结构,也可以被其他结构所继承。

2023-10-10 18:44:55 21

原创 C++总结

当子类继承了该父类时,会把虚表指针一起继承过来,会指向内容相同的一张虚函数表,如果子类中的成员函数与父类的同名虚函数的参数列表、返回值、常属性、异常说明相同,该子类的同名成员函数就会替换虚函数表中父类虚函数的地址,形成覆盖关系。vector底层是一个动态顺序表,当vector存储满且再添加数据时,会自动存储空间翻倍(编译器决定),底层通过realloc扩容,如果原位置无法扩容,会重新申请内存,拷贝原内存内容,并释放原内存。

2023-10-10 18:42:29 20

原创 标准C语言day14

枚举类型是希望把一种类型可能出现的所有的值罗列出来,并取一个有意义的名字表示,除此之外,该类型的值如果是其它值则非法。联合与结构的使用方法基本一致,与结构的区别是所有成员共用一块内存,其中一个成员的值改变,其他成员的值也会随之改变。注意:如果枚举成员不赋值,成员的值默认从0开始,逐渐+1,如果某个成员设置了值,后续的成员在它的基础上逐渐+1。结构是由程序员自己设计的一种数据类型,用于描述一种事物的各项数据,由若干个不同的基础类型组成。注意:计算联合的字节数时虽然不考虑内存对齐,但是依然要考虑内存补齐。

2023-09-26 20:03:08 27

原创 标准C语言day13

在终端执行 make 命令就会自动执行Makefile脚本中的编译指令,它可以根据文件的修改时间、和依赖关系来判断哪些文件需要编译,哪些不需要编译。假如a.h包含了b.h的内容,而b.h中又包含了a.h的内容,这时就会产生头文件的相互包含,无法编译通过。解决方案:把a.h中需要b.h的内容,和b.h中需要a.h的内容提取出来,额外再写另一个c.h。2、如果需要用到某个.c文件中的变量、函数、宏时,只需要把该文件的.h文件导入即可。1、为每个.c文件写一份.h文件,.h文件是对它对应的.c文件的说明。

2023-08-22 11:12:49 38

原创 标准C语言day12

3、先输入整型或浮点型,然后再输入字符或字符串时,前一次可能会残留一个’\n’,会影响后面字符或字符串的输入。1、当想要输入的是整型、浮点型,但是缓冲区中有字符型,此时读取会失败,并且继续残留在缓冲区中影响后面的输入。2、使用fgets时,如果输入的字符超过size-1个时,超出部分会残留在输入缓冲区中,影响接下来的输入。翻译的过程称为预处理,负责翻译的程序称为预处理器,被翻译的语句叫做预处理指令,以#开头的都是预处理指令。解决:判断字符串的最后一个字符是否是’\n’,如果不是说明缓冲区中有残留。

2023-08-22 11:11:56 30

原创 标准C语言day11

注意:void* 在C++编译器中是不能自动转换成其它类型的指针,如果想让代码也在C++编译器中兼容,需要强制类型转换。程序中输入的数据并不会立即从键盘接收到变量中,而是当按下回车后先存储到输入缓冲区中,然后再从缓冲区中读取到变量内存中。程序要显示的数据并不会立即显示到屏幕上,而是先存储到输出缓冲区中,当满足一定条件时才会从输出缓冲区显示到屏幕上。字符:人能看得懂的符号或图案,在内存中以整数形式存储,根据ASCII码表中的对应关系显示出相应的符号或图案。功能:计算字符串的长度,不包括’\0’

2023-08-22 11:10:30 32

原创 数据结构与算法day01

1968年,美国高德纳教授,《计算机程序设计艺术》第一卷《基本算法》提出,开创了数据结构与算法的先河。数据结构 + 算法 = 程序 揭露了程序的本质,沃思凭借这个观点获得了图灵奖。数据结构是一门研究数据之间关系、操作的学科,而非计算数据方法。创建、销毁、清空、插入、删除、访问、查询、修改、排序、遍历。三、链式表(链表) No.1 list。数据域:可以是各种类型的若干项数据项。指针域:指向下一个节点的指针。1、要确保数据元素的连续性。存储元素的内存首地址。

2023-07-12 16:16:08 35

原创 【图的介绍】

​ 图是一种比较复杂的数据结构,在线性表中数据元素之间仅有线性关系,每个元素只有一个直接前驱和直接后继(元素之间只存在一对一关系),在树形结构中元素之间有着明显的层次关系,每一层的元素只能和下层的多个元素有关系(元素之间存在一对多关系),而在图形结构中,任意两个结点之间都可能有关系(元素之间存在多对多关系)。**顶点:**图中的数据元素被称为顶点,一般使用V表示图的顶点的有穷非空集合。

2022-08-19 17:54:30 321 1

转载 函数fseek() 用法

根据评论来看,应该是 fseek(fp,-100L,2) )第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET。用 法: int fseek(FILE *stream, long offset, int fromwhere);在阅读代码时,遇到了很早之前用过的fseek(),很久没有用了,有点陌生,写出来以便下次查阅。其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.fseek(fp,100L,0);...

2022-08-16 19:34:17 5547

原创 二叉搜索树的表示与实现

​ 二叉搜索树又叫作有序二叉树、二叉查找树,具有以下特点:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。​ 二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势(O(log2n);所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。int val;// 结点的高度 size_t density;...

2022-08-15 19:51:08 74

原创 C语言学习第十一天

1、当程序首次向malloc申请内存时,此时malloc手里没有堆内存可分配,malloc会向操作系统申请内存,操作系统会一次性分配33页内存交给malloc管理(一页内存=4096个字节),之后再向malloc申请内存时,malloc会从这33页内存中分配给用户。C语言中没有管理堆内存的语句,C标准库中提供一套管理堆内存的函数,这些函数底层封装了各种系统管理堆内存的接口,所以可以跨平台使用。堆内存缺点:使用麻烦,安全性低,容易出现内存泄漏、内存碎片,内存利用率低,内存块之间有4~12字节的空隙。...

2022-08-15 16:48:47 612

原创 c语言学习第十天

前提:一个函数就是一段代码,它会被翻译成二进制指令存储在text内存段中,函数名就它的地址,它记录着函数在text内存段的位置,只要知道的函数的地址和函数的类型就可以调用这个函数。2、函数的返回值是指针,C语言中约定,返回指针的函数执行出错时会返回空指针,判断这种指针既知道函数执行是否出错,了可以避免空指针产生的段错误。但野指针比空指针的危害更大,因为野指针产生的错误是隐藏的、潜伏的、随机的,出错后很难寻找、定位、重现。指针数组是由指针变量组成的数组,它的成员是指针,但它的身份是数组。...

2022-08-13 14:48:23 94

原创 c语言学习第九天

2、当函数的函数返回值是指针类型,如果函数执行出错则会返回空指针(空指针是函数执行出错一标志),对返回值进行判断,既可以知道函数执行是否出错,也可以避免对空指针解引用,比如:malloc执行出错误返回值是就空。前提:指针变量中存储的是代表内存地址的整数,理论上整数可以使用的运算符,指针变量都可以使用,但只有指针加/减整数或者指针-指针才有意义。通用指针指的是void类型的指针,它能与任意类型的指针进行转换,缺点是不能解引用,必须先转换成其它类型的指针才能解引用,进步值是1。// arr 的类型就是int*.

2022-08-13 14:45:52 203

原创 c语言学习第八天

2、指针变量中存储的是内存地址(整数,便签的序号),以32位系统为例,指针变量值的范围是:0x00000000~0xffffffff,指针变量占用4字节内存。指针的运算、二级指针、万能指针、数组指针、指针数组、函数指针、指针函数,数组名与指针、const与指针、堆内存、字符串、结构指针、结构成员指针…4、指针变量的默认值与普通变量一样是随机的(野指针),为了安全一般要给指针变量初始化,如果没有合适的内存地址,可以先赋值为NULL(空指针)。// p1是指针变量,p2,p3只是普通的int类型变量。...

2022-08-13 14:45:01 55

原创 c语言学习第7天

auto:早期用来定义自己分配、释放内存的变量(局部变量、块变量),但随着实际编程中局部变量、块变量使用的越来越多,C标准委员会决定,该关键字不加就代表加,就像signed关键字一样,因此它现在在C语言中没有什么用。扩展:在C++11语法标准中auto老树开花,它可以根据初始化数据,自动设置变量的类型,所以在面试、笔试时,要搞清楚面试的岗位是C开发还是C++开发。注意:全局变量、局部变量、块变量是可以重名的,局部变量会屏蔽同名的全局变量,块变量会屏蔽同名的全局变量和局部变量。全局变量:定义在函数外的变量。.

2022-08-13 14:40:33 240

原创 c语言学习第六天

4、最高位如果是1,则说明是负数的实补码,补码-1得到反码,反码按位求反得到原码,原码转换成十进制数据并加负数。1、判断补码是否是有符号的,如果是无符号补码直接转换成十进制即可。3、最高位如果是0,则说明是正数的实补码直接转换成十进制即可。2、有符号的补码需要根据符号位,判断是不正数还是负数。1、计算它的绝对值二进制数据得到原码。位运算符是对数据的补码进行运算。01111101 -125原码。10000011 -125补码。00100010 34补码。2、原码按位求反得到反码。3、反码+1得到补码。...

2022-08-13 14:39:52 134

原创 c语言学习第五天

函数就一是一段具有某项功能的代码,它是C语言中管理代码的最小单位,把具有某功能的若干行代码封装在函数中方便管理代码且方便重复调用。系统函数:操作系统为程序员提供了一些系统API,可以以函数形式调用,但它们不是真正的函数,讲UNIX系统环境编程时会详细讲解。标准库函数:C语言标准委员会为C程序员以函数形式提供了一些基础功能,这些函数被封装在libc.so库文件中。1、代码量过多,一般代码量超过50就要考虑封装成函数,方便管理代码。自定义函数:为了更方便的管理、调用,程序员自己封装的一些函数。......

2022-08-13 14:36:22 265

原创 c语言学习第四天

什么是函数:是一段具有某项功能的代码,是管理C语言代码的最小单位,英语是function,早期被翻译成函数,但是与数学中的函数没有关系,而现在的编程语言都翻译为方法。C语言标准委员会为C语言以函数形式提供的一些基础功能,这些函数被封装在libc.so库文件中,使用时需要包含相应的头文件,根据:函数名(参数) 即可调用。1、函数声明是为了让编译器检查调用者的使用方法、提供的参数是否匹配,如果函数的定义语句出现在调用之前,函数声明可以省略。函数的分类:标准库函数、系统函数、第三方库函数、自定义函数。...

2022-08-13 14:34:32 152

原创 c语言学习第三天

变长数组就是数组在定义时,使用变量作为它的长度,在执行数组定义语句前,长度变量可以变化,当执行了数组定义语句后,数组的长度就确定下来了,不能再变。由于变量可以作为数组的下标,在编译时无法确定下标变量的值是否合法,所以编译器无法检查出数组越界的错误,只有在程序执行时才会触发错误。2、初始化语法只有在定义数组时才能使用,数组定义完毕后,只能单个访问其中的变量,初始化过程是编译器帮助完成的。练习9:定义一个长度为10的数组并初始化,计算出数组中的最大值,最小值,平均值。...

2022-08-13 14:33:49 145

原创 c语言学习第二天

% 都是进行除法运算,/运算结果是商,%运算结果是余数,它们除数都不能为0,编译器可能会产生警告但不会报错,程序运行是会出现"浮点数例外,核心已转储"的错误,程序会异常退出。%0n.mf 小数后显示m位,不够则补0,多余的四舍五入,数据至少显示n个字符宽度(不数点占一个字符宽度),不够则补0,默认右对齐。%-n.mf 小数后显示m位,不够则补0,多余的四舍五入,数据至少显示n个字符宽度(不数点占一个字符宽度),不够则补空格,左对齐。...

2022-08-13 14:32:52 265

原创 c语言学习第一天

3、C语言标准委员会为C语言提供了一些基础功能,这些功能以函数形式封闭在libc.so库文件中,同时还提供一些对函数的说明文件(头文件),常用的头文件有:stdio.h stdlib.h string.h math.h。1、程序员所编写的C代码不是标准的C代码,需要一段程序把它翻译成标准的C代码,负责翻译的程序叫预处理,被翻译的指令叫预处理指令,以#开头的指令都是预处理指令。优点:语法简单,只有32个关键字,运算速度快,适合实现底层的算法,控制硬件的能力强,一般应用于嵌入式开发。...

2022-08-13 14:31:32 272

原创 树和二叉树的表现与实现

​ 树是一种非线性的数据结构,是以分支关系定义的层次结构,比如人类社会中的族谱、及各种机制、组织的关系都可以用树形象的表示。重点学习二叉树的存储和相关操作,还要讨论树、森林、二叉树的转换关系。**树:**是n个结点的有限集,当0==n时称为空树,我们不讨论空树。**根结点:**树的最顶层的结点,一棵树有且仅有一个。**子树:**一棵树除根结点外,剩余的是若干个互不相交的有限集,每一个集合本身又是棵树,称称为根的子树。...

2022-08-09 19:35:59 246

原创 串的介绍,字符串的表示与实现

​ 串型结构就是由若干个类型相同的元素组成的数据结构,末尾有一个结束标志,字符串就是由字符元素组成的串型结构,'\0’是它的结束标志,使用它可以存储单词、文章、汉字等文字信息。​ 随着计算机和编程语言的发展,字符串在程序中使用的越来越多,字符串就简称串,对它的操作都是对串里面所有字符整体操作,以’\0’为结束标志,如果字符串的末尾没有’\0’,可能会产生乱码、段错误、脏数据等问题。......

2022-08-08 18:51:24 366

原创 数据结构基本概念

数据结构不是研究数值计算的这些是数学家应该研究的问题,它是研究计算机存储、组织数据的方式问题的学科,数据结构会影响算法的效率,合适的数据结构可以带来更高的运行或存储效率。1968年,美国的高纳德(Donald E. Knuth)教授《基本算法》,开创了数据结构课程体系的先河。程序设计 = 数据结构 + 算法凭借一句话获得图灵奖的Pascal之父——Nicklaus Wirth,让他获得图灵奖的这句话就是他提出的著名公式:“算法+数据结构=程序”。...

2022-08-05 16:08:17 146

原创 栈和队列介绍

​ 栈和队列是两种重要的线性结构,从数据结构来看,他们也是线性表,其特殊性在于它们的基本操作是线性表的子集,也就中功能受限的线性表,也被称为限定性的数据结构。​ 但从数据类型角度来看,它们是和线性表不大相同,有些时候它们被当作一种管理数据的规则。​ 栈(stack) 是限定仅在表尾进行插入或删除操作和线性表(只有一端口能进出数据),对栈来说表尾和表头有特殊含义,表尾被称为栈顶,表头被称为栈底,没有元素的空表称为空栈,元素数量达到栈的容量称为满栈,数据添加到栈中叫入栈、压栈,数据从栈中删除叫。...

2022-08-05 09:07:28 1328

原创 线性表的顺序表示和实现以及线性表的链式表示和实现

在执行链表的插入、删除操作时,需要被操作节点的前驱节点和后继节点,如果被操作节点是头节点,则它没有前驱节点,需要额外特殊处理,因此为了方便插入和删除操作所以给单链增加一个空的头节点。线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中的任一元素,它的存储位置可以用一个简单、直观的公式来表示。若干个元素节点通过指针域连接起来,形成的线性表结构称为链式表,简称链表,节点中只有一个指向后继元素的指针域,这种链表也被称为单向链表。size_t cnt;size_t cap;.

2022-08-02 20:11:52 557

转载 scanf()与getchar()函数区别

char str1[20], str2[20];scanf(“%s”,str1);printf(“%s\n”,str1);scanf(“%s”,str2);printf(“%s\n”,str2);return 0;}程序的功能是读入一个字符串输出,在读入一个字符串输出。可我们会发现输入的字符串中不能出现空格,例如:测试一输入:Hello world!输出:Helloworld!【分析】到此程序执行完毕,不会执行第二次的读取操作!这个问题的原因跟问题一类似,第一次输入Hello wo

2022-07-14 16:48:21 634 1

空空如也

空空如也

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

TA关注的人

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