自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++多态

那么类中的析构函数能否为虚函数呢?在继承的基础上,我们都知道派生类继承到了父类的成员变量和成员方法,并且派生类可以直接进行访问,前提是public继承,并且父类的成员变量也要是public属性,那么,如果一个父类有许多个子类,比如一个动物类作为父类,猫狗鱼鸟虫作为子类继承它,当父类中有一个属性为“类别”,那么这些派生类去初始化这个变量时会将这个变量在每个派生类中都初始化一次,并且每个变量的值都不一样,每个值对应着每个种类,这就叫做多态。而虚函数表,在VS2022中存在代码段中。

2023-11-29 18:18:49 241

原创 C++继承

那么根据继承的特性来说,派生类会拥有父类的成员函数和成员变量,但是当在菱形继承中,孙子类将拥有两个派生类+一个父类的所有public成员函数和成员变量,那么虽然看起来没什么问题,但是当中间的两个派生类中的成员变量和成员函数都相同时,这时在孙子类中就会有大量的重复成员出现,会有数据冗余和二义性的问题出现。继承呈现了面向对象程序设计的层次结构。三种不同的访问限定符下的继承关系,对于成员变量和成员函数的访问权限肯定是不同的,C++在继承中使用这三种访问限定符的目的也是为了限定和保护父类的成员变量和成员函数。

2023-11-27 23:11:47 234

原创 C++智能指针

在对象被销毁时,也就是调用析构函数时,就说明自己不适用该资源了,对象的引用计数减一。我们可以看到,auto_ptr在使用时使用了管理权转移的方法,在使用auto_ptr管理资源时,auto_ptr会先将传进来的new出来的对象,然后auto_ptr会用传进来的地址赋值给自己的指针,然后再释放掉传进来的指针所指向的空间,将资源转移给了auto_ptr管理,也就是说ap对象现在是空的,但是如果下文中使用ap对象去访问了其成员,就会出现错误,针对这个特性,auto_ptr也是被建议尽量不要使用的。

2023-11-26 17:57:43 279

原创 Linux文件系统

我们上面说过,目录也是文件,也有其对应的inode,所以它有着和文件相同的属性,这里的硬链接,除了它本身之外,我们也可以通过它打开的文件找到它,以它路径下被打开的文件的角度来看,也有一条硬链接,以bin目录和其目录下的log.txt为例,bin的inode,和log.txt中的上级目录的inode是相同的,所以是两个硬链接数。而在这个过程中,是一定需要fd的!是的,操作系统和文件的关系,就是1:n的关系,操作系统打开大量的文件并不是稀奇事,那么如何管理就是一大关键问题了,那么如何管理呢:先描述,再组织。

2023-11-15 12:13:23 246

原创 输入一个url后,会发生什么事?

由于浏览器默认使用的是http/https协议,所以由会话层自上向下交付数据,先是由应用层的http/https协议打上自己的报头,并且使用http的POST方法,将用户的账号密码通过正文部分进行提交,这样使得用户的信息更加私密,并且在用户端使用cookie将用户输入的账号密码,通过请求用户的方式来进行保存进服务端的session,并且使用一些列非对称+对称方案,通过服务端在CA证书机构的权威认证,对双方的密钥进行加密,最后加上自己的报头,例如正文长度,编码方式等。在底层发生了什么事呢?

2023-11-09 17:58:28 352

原创 TCP/IP协议

—将网络分区,将网络分成一个一个小区域,并由一个小计算机来负责此区域的数据进出,此计算机就叫做路由器,将一个大的网络不断划分成很多小的网络,并且由很多路由器来管理,这样的话每个子网中都可以有重复的IP,它们彼此之前不会直接通信,不会造成IP冲突。那么在分片过程中,16位总长度一般以1480字节来作为最大长度,所以分片后每个IP包只能发送1480字节的有效数据,但是,不可忽视的是,在网络中每个数据包都是有报头的,例如TCP的三次握手和四次挥手,即使是简单的应答机制发送的也是一个完整的报文。

2023-11-05 16:39:40 533

原创 udp协议/tcp协议

我们知道数据的接收和发送并不接受用户的控制,而是全权交给tcp来决定,换句话说我们肉眼所看到的“数据已经发出”,或者“数据已经收到”,其实不然,虽然看似数据已经发出,但是其实数据是存在tcp的发送缓冲区中,而tcp在等待很多东西,比如对方缓冲区的窗口大小,网速问题等,而如果接收方的窗口大小不够存正在处于发送端发送缓冲区的数据,则先不会发送,会通过下文即将要介绍的标志位中的PSH报文,通知对方上层尽快接收处于接收缓冲区的数据,发送端还有数据没有发完,所以窗口大小是和缓冲区相辅使用的。

2023-10-29 17:58:24 1064

原创 http协议/https协议

所谓协议,正是为了区分懂的人和不懂的人,换言之,协议只对遵守协议的人起作用,协议也只为遵守协议的人服务,对于不懂得遵守协议的人,协议自然而言就发挥不了其作用,那么之于互联网行业,懂得遵守协议的人也就是程序员了,协议由程序员编写,由程序员维护,也自然而然只有程序员懂得如何遵守协议,如何使其为己所用,那么对于不懂的人来说,也就是普通人,只能“傻傻”的使用,其中的细节,发展历史,也就没办法知道了,总之,协议是为了规范程序员与程序员在操作网络网页时能更加规范,更加有序。我的信息是如何被该网站拿到的?

2023-10-25 18:05:26 187

原创 C++版本数据结构09:冒泡排序

那么此版本的快速排序,定义两个变量left和right,和一个key变量,通常来说key是定义为最左边的值,left负责找比key大的值,right负责找比key小的值,找到了则交换位置,最后left和right相遇时再和key交换位置,这样的话可以大致将整个数组分成两部分,key左边都比key小,key右边都比key大,比排序前要相对有序。上面说的是左边做key,右边做key道理是一样的,最终的目的是一样的:将key两边的数据分开,左边的比key小,右边的比key大。

2023-10-07 09:53:58 230

原创 C语言版本数据结构08:选择排序

选择排序+堆排序

2023-09-26 15:29:46 98

原创 C语言版本数据结构07:插入排序+希尔排序

插入排序+希尔排序

2023-09-18 23:15:06 99

原创 C语言版本数据结构06:堆排序

这一篇博客将用代码实现二叉树中很重要的堆和链式二叉树

2023-09-16 21:36:06 118

原创 C++初阶02:关键字+命名空间+输入&输出+缺省参数+函数重载+extern C+引用+内联函数

C++入门

2023-09-16 09:02:41 177

原创 C++初阶01:前言

前言

2023-09-16 09:02:31 107

原创 C++中与字符串判断有关的函数

将字符c转换成小写字符。如果字符c无法转化成小写字符,则返回字符c。将字符c转换成大写字符。如果字符c无法转化成大写字符,则返回字符c。检查字符是否为大写字母,是则返回true,否则返回false。检查字符是否为字母或数字,是则返回true,否则返回false。检查字符是否为小写字母,是则返回true,否则返回false。检查字符是否为字母,是则返回true,反之返回false。检查字符是否为数字,是则返回true,否则返回false。

2023-08-09 19:29:02 339

原创 程序的预编译+编译+汇编+链接

一个.c文件在ctrl+F5后如何变成了.exe文件呢?中间经历了什么操作,是谁调用了它,学习其中的原理对编程的学习和理解有不小的提升,如果你和我一样也是学C/C++的,对后面C++和Linux的学习也会有帮助。1.程序的翻译环境和执行环境想要学习这块内容,先要搞清楚一个C语言的代码程序在编译运行时的两个环境:在ANSI C的任何一种实现中,存在两个不同的环境。:1.翻译环境,在这个环境中源代码被转换为可执行的机器指令。 2.执行环境,它用于实际执行代码。在学C语言后期时候会试着写一..

2022-01-01 20:34:29 1669

原创 调用函数时栈帧的创建和销毁(反汇编)

这篇博客将讲解在写程序调用函数接口时究竟产生了什么变化,哪里产生了变化,并且还要介绍一个以前没有介绍过的朋友 - 反汇编

2021-12-11 11:44:02 893

原创 C语言版本数据结构05:树、二叉树

今天继续介绍一个新结构:树形结构。学过编程的朋友肯定对其不陌生,到了树形结构就说明要开始研究数据结构的一些比较深层次的内容了,树形结构也尤为重要,当然作为学习者没有知识点分为重要不重要,我们都应该学好才是。那么,开始。①树的概念:树是一种非线性的数据结构,线性结构也就是我们前面学习的顺序表、链表、栈、队列,它们中存储的数据都是以一条线般,没有额外分支分层,可以“一镜到底”,我们就叫它线性结构,而树形结构不同的是,它并不像线性结构可以一条线完成对数据的存储,而它可以像树一般存完树干存树枝,既分

2021-12-09 17:02:34 568

原创 C语言版本数据结构04:栈和队列

今天我们来学习两个数据结构的新结构:栈和队列。1.栈①栈的概念:我们之前学过顺序表链表,知道数据在内存中可以以顺序方式存储也可以不顺序的方式存储,它们两个各有优劣,那今天要学的这两个也是线性表,那么先来看一下栈的定义吧。栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。我们可以将栈理解为一个枪的弹夹,压子弹的时候最先被压进去的子弹一定是最后

2021-12-09 10:45:31 128

原创 C语言版本数据结构03:顺序表+链表

今天我们来学习数据结构的第一个顺序结构:顺序表和链表。

2021-11-05 16:28:20 773

原创 C语言版本数据结构02:复杂度

今天开始我们就进入到数据结构的第一个知识板块,相信大家在学校学习或者在一些数据结构的书上看到的第一章肯定是关于复杂度的讲解,可见从现在开始我们写代码就不能一味着讲究“解决问题”了,我们还要考虑效率的问题,那么什么是效率呢?可以理解为该方法对于一个问题的解决消耗,如果在准确的前提下消耗的资源、时间更短,说明该方法的效率更高。移到编程上来说这个方法就叫做算法,那么如何形象的理解算法的效率呢?算法效率如何衡量一个算法的效率呢?我们肯定编程里有一种方法叫做递归,就是一种将问题大化小,小化了的方法,那如果

2021-11-04 11:21:12 224

原创 C语言版本数据结构01:简介

前言:从今天开始大家请原谅我不能再按照有顺序的章节来给大家更新知识博客了,是本人有原因,由于我在上学,自身学习编程的进度也在不断前进,大家学过编程的都知道学编程不是一蹴而就的事,所以有一些内容被落下,日常生活的作业和琐事不断,甚至我学习的内容也已经打破了正常的进度,所以给大家更新博客的速度肯定受了影响(哭),本来按照这个进度正常情况下应该更新到数据结构的栈和队列,并且C语言一些必刷的题都应该讲到,但是现在C语言的知识还有一些没有结尾....我的错,我承认,所以以后的博客我会慢慢更新,但是不会再按顺序,不会再

2021-11-04 11:20:48 240 1

原创 深入C语言5——动态内存管理

今天我们继续来学习C语言,今天的内容呢是关于动态内存的,我们知道内存可以分为几个板块,栈区,堆区,静态区,我来用一张图片解释:我们平时再main函数里定义的变量都是局部变量,那么当我们定义好了一个局部变量,内存就会在栈区当中为我们开辟一块空间,有且只有这一块空间,这也叫做静态内存。换一个例子吧,当我们需要存一串不确定位数数字,你应该如何存储呢?我们肯定首先想到的是数组,但是这个数组要定义多大呢?由于并不知道会给多少数字,我们先定义100个?但是如果只给了10个数字呢?那我们定义20个?但是如果.

2021-11-03 20:25:38 169

原创 深入C语言4——自定义类型:结构体、枚举、联合体

今天

2021-10-17 15:45:39 463

原创 深入C语言3——字符串函数

今天我们将再深入研究一个老朋友了,字符串

2021-10-12 17:55:21 4450

原创 深入C语言2——指针进阶

欢迎回来

2021-10-10 14:04:01 313

原创 深入C语言1——数据的存储

从今天开始我们就结束C语言的初级学习,进行深入研究C语言,进入到此板块呢就意味着大家不再是了解C语言了,我们要意识到我们真的在学习一门语言,所以请大家打起精神,我们将在之前的基础上对从C语言进行纵向学习,还有大家可能发现我的博客并不像一些经常发博客的大佬们的博客那么精美,每个标题都是一个坐标,点开就可以直接跳转,原因其一是因为我刚接触csdn没多久,对于这上面的功能还不是很了解,我只是想把知识带给大家,所以也并没有多操心搞那些,原因其二是因为我认为学习不能跳跃式,如果真心想学好,一定要挨着看,因为我写博客的

2021-10-09 12:52:44 2014

原创 初入C语言_9

VS调试方法(VS2019为例)

2021-10-06 21:47:50 364 1

原创 初入C语言_8

结构体

2021-10-04 10:22:22 168

原创 初入C语言_7

指针

2021-10-03 12:36:17 331

原创 初入C语言_6

操作符详解我们之前可能已经介绍了一些C语言里的操作符,今天我们就这类知识来更深入一些的学习,我们知道加减乘除算是操作符,也是最常用的操作符,那除了这些还有什么呢?它们的使用方法和加减乘除又有什么不同呢?来看一、操作符C语言里的操作符大致可以分为这么几类:算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员我们来一一介绍:1.算术操作符:+ - * / %算术操作符...

2021-10-02 15:50:03 241

原创 初入C语言_5

数组 操作符详解

2021-10-01 16:10:10 289

原创 ^_^

10个粉丝了????,值得庆祝

2021-09-22 07:48:57 121

原创 C语言小游戏——扫雷

上次我们写了三子棋,回顾一下吧,用到了很简单的二维数组,全局变量,头文件的创建,函数的封装调用,循环分支。想必大家下来肯定都自己上手练了练的,看会了可不算会,要做就做话少本事大的人,不做屁多话稠的卢瑟,说可以,一做就歇菜,所以编程这条路上没有用眼睛成功的,所有的程序员都是勤于动手动脑的人,想100%成功就要200%的努力,好了回归正题,今天我们来完成三子棋的进阶版,扫雷,想必大家更不陌生,在大家买的第一部电脑上都有这部游戏,蓝灰色的界面,一个小黄脸,很多小格子藏着地雷等你去踩,规则我就不多说了,大家可以自行

2021-09-20 21:30:50 1175

原创 C语言小游戏——三子棋

经过这么几篇博客的浏览,相信大家的编程功底已经进了一个台阶,我们也不能只居于写一些数学小游戏来练习编程能力,编程的背后确实需要大量的数学思维和运算,但是我们最终还是要走出来,面对一个真正的程序,又该如何编写呢?想必大家生活中一定玩过五子棋,不论横竖斜,只要五颗连在一起就算赢,另一名玩家要在阻止对方赢的情况下保证自己的胜利,当然我们今天的目的并不是来探讨怎么下五子棋的,我们学编程的当然是要干一些和编程有关的事了,我们的目的就是要来实现这种小游戏的实现,byC语言,这也是每个程序员修炼时期必经之路,通过这些

2021-09-19 22:29:25 455

原创 初入C语言_3

目录1. 计算 n的阶乘。 2. 计算 1!+2!+3!+……+10! 3. 在一个有序数组中查找具体的某个数字n。 编写int binsearch(int x, int v[], int n); 功能:在v[0] <=v[1]<=v[2]<= ….<=v[n-1]的数组中查找x. 4...

2021-07-19 00:39:29 347 3

原创 初入C语言_2

目录 1.分支语句和循环语句 2.函数经过上次的学习,相信大家已经对C语言有了一个初步的认识,知道了它的由来和发展历程,也初步了解了一个程序的写法,变量的定义等,这次呢我们就来更上一层楼,来看看C语言当中分支和循环以及函数的功能,话不多说,我们开始吧。1.分支语句和循环语句(1)什么是语句?顾名思义,语句就是一句话,一句话结束了就叫做一个语句,中文里我们以句号结束一个语句,C语言里我们于法规定以分号(;),例如:pri...

2021-06-12 17:11:48 457 1

原创 初入C语言_1

1.什么是C语言?2.一个简易的C语言程序3.C语言中的数据类型4.常量与变量目录1.什么是C语言?2.一个简易的C语言程序3.C语言中的数据类型4.常量与变量5.字符串+转义字符+注释5.字符串+转义字符+注释...

2021-06-07 18:27:11 641 8

原创 THE START

本人是是一位大一的学生。来自河北。1.个人对于编程的目标:在大学期间完成相应专业课,培养编程能力,z

2021-06-02 22:59:32 162

空空如也

空空如也

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

TA关注的人

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