自定义博客皮肤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)
  • 收藏
  • 关注

原创 C++ : 二叉搜索树

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树。

2024-10-08 21:15:05 156

原创 C++ : 多态

2.1多态的构成条件多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了 Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口 类),抽象类不能实例化出对象。

2024-09-27 16:57:04 727

原创 C++: 继承

下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。1. 很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱 形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设 计出菱形继承。否则在复杂度及性能上都有问题。2. 多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。3. 继承和组合public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。组合是一种has-a的关系。

2024-09-25 21:39:08 914

原创 c++:类与对象

/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分 号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者 成员函数。类的两种定义方式:1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内 联函数处理。

2024-06-20 16:06:06 830

原创 c++入门(2)

使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto 的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编 译期会将auto替换为变量实际的类型。1. auto与指针和引用结合起来使用 用auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时则必须 加&int x = 10;

2024-06-18 13:03:35 790

原创 C++入门(1)

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。创建命名空间实际上就是创建一个属于bit自己的领域。我们想用到这个领域的变量或函数时,在前面加一个标志就可以(如bit::)。命名空间中可以定义变量/函数/类型。命名空间还可以嵌套,在引用时在前面再加一层标志即可。同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

2024-06-16 13:02:21 851

原创 顺序表链表经典算法题

核心思想:定义三个指针,第一个只想为空,第二个指向头节点,第三个指向头节点的下一个节点。之后让头节点的next指针反转180°,三个指针依次往后走。循环这一过程,直到p2为空。要注意的是p3为空时不能解引用,否则编译器会报错。

2024-04-19 18:38:33 460 1

原创 带头循环双向链表专题

带头链表⾥的头节点,实际为“哨兵位”,哨兵位节点不存储任何有效元素,只是站在这⾥“放哨 的” “哨兵位”存在的意义: 遍历循环链表避免死循环。

2024-04-18 13:05:26 658 1

原创 单链表链表专题

概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表的结构跟⽕⻋⻋厢相似,淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。只 需要将⽕⻋⾥的某节⻋厢去掉/加上,不会影响其他⻋厢,每节⻋厢都是独⽴存在的。⻋厢是独⽴存在的,且每节⻋厢都有⻋⻔。想象⼀下这样的场景,假设每节⻋厢的⻋⻔都是锁上的状态,需要不同的钥匙才能解锁,每次只能携带⼀把钥匙的情况下如何从⻋头⾛到⻋尾?最简单的做法:每节⻋厢⾥都放⼀把下⼀节⻋厢的钥匙。

2024-04-15 22:36:56 886 1

原创 数据结构:顺序表专题

常⻅的数值1、2、3、4.....、教务系统⾥保存的⽤⼾信息(姓名、性别、年龄、学历等 等)、⽹⻚⾥⾁眼可以看到的信息(⽂字、图⽚、视频等等),这些都是数据。

2024-04-08 15:43:23 1184

原创 c语言:预处理详解

举个例⼦:在预处理阶段,编译器会自动把代码中的MAX换成100。#define 机制包括了⼀个规定,允许把参数替换到⽂本中,这种实现通常称为宏(macro)或定义宏 (definemacro)。注意:参数列表的左括号必须与name紧邻,如果两者之间有任何空⽩存在,参数列表就会被解释为stuff的 ⼀部分。这个宏接收⼀个参数 x .如果在上述声明之后,把 SQUARE( 5 );置于程序中,预处理器就会⽤ 下⾯这个表达式替换上⾯的表达式: 5 * 5警告: 这个宏存在⼀个问题int a = 5;

2024-03-31 14:34:40 1418 3

原创 c语言:文件操作

磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。函数名功能适⽤于fgetc字符输⼊函数所有输⼊流fputc字符输出函数所有输出流fgets⽂本⾏输⼊函数所有输⼊流fputs⽂本⾏输出函数所有输出流fscanf格式化输⼊函数所有输⼊流fprintf格式化输出函数所有输出流fread⼆进制输⼊⽂件fwrite⼆进制输出⽂件。

2024-03-26 16:27:14 1292 5

原创 c语言(动态内存管理函数)

但是上述的开辟空间的⽅式有两个特点:但是上述的开辟空间的⽅式有两个特点:• 空间开辟⼤⼩是固定的。• 数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整 但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道,那数组的编译时开辟空间的⽅式就不能满⾜了。C语⾔引⼊了动态内存开辟,让程序员⾃⼰可以申请和释放空间,就⽐较灵活了。

2024-03-22 14:48:08 1230 2

原创 c语言(自定义类型——结构体)

C语⾔已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类 型还是不够的,假设我想描述学⽣,描述⼀本书,这时单⼀的内置类型是不⾏的。描述⼀个学⽣需要 名字、年龄、学号、⾝⾼、体重等;描述⼀本书需要作者、出版社、定价等。C语⾔为了解决这个问 题,增加了结构体这种⾃定义的数据类型,让程序员可以⾃⼰创造适合的类型。

2024-03-20 15:13:37 760 1

原创 c语言(数据在内存中的存储)

这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着⼀个字节,⼀个字节为8 bit 位,但是在C语⾔中除了8 bit 的 char 之外,还有16 bit 的 short 型,32 bit 的 long 型(要看 具体的编译器),另外,对于位数⼤于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度⼤ 于⼀个字节,那么必然存在着⼀个如何将多个字节安排的问题。很多的ARM,DSP都为⼩端模式。对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。

2024-03-18 14:33:35 1033

原创 c语言(字符串函数和内存函数的模拟实现)

【代码】c语言(字符串函数和内存函数的模拟实现)

2024-03-16 17:25:03 294 1

原创 c语言(qsort函数的应用及其模拟实现)

前面我们学习过冒泡排序现在来回顾一下冒泡排序通过比较两个整数的大小,若前一个数比后一个数大,就交换这两个数,通过多次循环最后达到升序排列的效果。但是冒泡排序具有局限性,他只能排列整型的顺序。那如何实现对任意类型进行排序呢?C语言提供了一个库函数qsort函数,它可以实现对任意类型进行排序。

2024-03-14 21:32:42 630 1

原创 C语言:深入理解指针(4)(函数指针数组,回调函数)

那要把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?我们举个例子那怎样把这个函数的地址存放到数组里呢?首先,函数指针数组是一个数组,这个数组里只有一个元素我们就先写arr[1]。数组里存放的是函数指针,那就在前面加一个*,*arr[1]表示数组里存放的是指针。数组里存放的指针指向的是一个返回值为int ,参数也为 in t的函数。那就在*arr[1]前面写int ,后面写(int, int)。结果就是int *arr[1](int, int) = {Add}

2024-03-12 16:00:37 584 5

原创 C语言:深入理解指针(3)

在指针的类型中我们知道有⼀种指针类型为字符指针 char*;输出结果为:代码 const char* pstr = "hello bit.";特别容易让大家以为是把字符串 hello bit 放 到字符指针 pstr ⾥了,但是本质是把字符串 hello bit. ⾸字符的地址放到了pstr中。我们对指针变量pstr解引用,得到的其实是字符串的首元素。这⾥str3和str4指向的是⼀个同⼀个常量字符串。

2024-03-09 15:00:23 776 2

原创 c语言:深入理解指针(2)

这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且 是数组⾸元素的地址,我们来做个测试。输出结果:我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地 址。这时候有人会有疑问?数组名如果是数组⾸元素的地址,那下⾯的代码怎么理解呢?输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。

2024-03-06 18:34:32 1398 1

原创 c语言:深入理解指针(1)

Swap1函数时,将a和b传递给了Swap1函数,在Swap1函数内部创建了形参x和y接收a和b的值,但是x的地址是0x00cffcec,y的地址是0x00cffcf0,x和y确实接收到了a和b的值,不过x的地址和a的地址不⼀样,y的地址和b的地址不⼀样,相当于x和y是独⽴的空间,那么在Swap1函数内部交换x和y的值,⾃然不会影响a和b,当Swap1函数调⽤结束后回到main函数,a和b的没法交换。答案是:指针变量中。在上⾯的代码中,将⼀个int类型的变量的地址赋值给⼀个char*类型的指针变量。

2024-03-03 19:42:32 1267 1

原创 c语言编写扫雷游戏(代码+代码详解)

欢迎对c语言感兴趣的小伙伴来一起学习,但开始阅读之前需要注意:代码的实现要有数组、函数,条件、分支、循环语句的基础,如果你是c语言小白,可以看我之前的博客来学习相关内容。下面我们正式进入扫雷游戏。1. 扫雷游戏分析和设计1.1 扫雷游戏的功能说明• 使⽤控制台实现经典的扫雷游戏• 游戏可以通过菜单实现继续玩或者退出游戏• 扫雷的棋盘是 9*9的格⼦• 默认随机布置10个雷。

2024-02-27 11:36:53 883

原创 c语言数组(一维数组+二维数组+巩固练习),内容详细,干货满满

数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息: • 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。• 数组中存放的多个数据,类型是相同的。数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。

2024-02-03 19:42:27 1016 1

原创 c语言分支循环案例:猜数字游戏

游戏要求:1. 电脑⾃动⽣成1~100的随机数2. 玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈,直到猜对,游戏结束。

2024-01-31 16:35:39 561

原创 c语言分支语句和循环语句

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。 我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。if 语句的语法形式如下:表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是 不是

2024-01-23 17:36:19 974

原创 c语言常见概念

为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不 同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准 库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函 数其他编译器不⼀定⽀持)。⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键 字。

2024-01-19 08:53:10 963

原创 此刻,我正式加入互联网大军

1、学习不是一蹴而就,不是学几天就精通了,陌生的知识更是从接触、了解、使用、掌握、熟悉这样一个循循渐进的过程。第二、国内的脑机接口公司很少,所以招聘的岗位也很少,我就读的院校也不是92院校,竞争力相对较低。但是,直到开学我才意识到,一心想毕业就工作的我,并不适合这个方向。今后,我将经常在博客上分享我的学习经历,与大家互相监督,互相学习。基于以上原因,我不得不另寻出路,经过深思熟虑,我想加入。,选导师之前,我被这个科技前沿的方向深深吸引。欢迎大家来到我的第一篇博客。,我也是这样,所以今后要朝着这个目标努力。

2024-01-16 20:06:42 576 1

空空如也

空空如也

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

TA关注的人

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