自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态库的加载与进程间通信初步认识

动态库是一种在运行时被加载到进程中的库。与静态库不同,静态库在编译时被链接到应用程序中,而动态库则在运行时被加载。这允许我们在不重新编译整个应用程序的情况下更新库。在Linux中,动态库通常以.so(共享对象)为扩展名。在Windows中,它们被称为DLL(动态链接库),并以.dll为扩展名。

2024-05-12 09:44:45 409 1

原创 C++ string的认识

在C++编程中,类是一个非常重要的组成部分,用于处理和操作字符串。

2024-05-09 10:52:41 356

原创 C++入门2和类与对象初步了解

那么我们可以看到类外的可以访问公有的成员函数,但是这些是如何访问的,答案就是隐藏在类当中的this指针,类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,那当调用 Init 函 数时,该函数是如何知道应该设置a1对象,而不是设置a2对象呢?C++中通过引入this指针解决该问题,即:C++编译器给每个“非静态的成员函数“增加了一个隐藏 的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有“成员变量” 的操作,都是通过该指针去访问。

2024-03-25 21:38:29 540

原创 C++入门基础知识汇总

C++中定义自己的输入输出运算符,那么这些运算符是包含在C++的iostream头文件的std命名空间中,cin>>表示输入,cout<<表示输出,有了对命名空间的理解,那么使用输入输出也变得更简单。关于引用的引入其目的就是为了提高代码的效率,和指针相比,引用有着一些指针没有办法替代的好处,例如引用也可以作为返回值,也可以作为参数传递,当你在应对二级甚至复杂的指针代码时,引用的好处就体现出来了。例如上段C语言的代码,运行之后的结果如下所示,可以很清晰的看到出现了重定义的报错,这就是冲突。

2024-03-22 21:57:40 838 1

原创 排序算法总结

排序的定义听起来很简单:就是按照一定的顺序重新排列一组数据。但这背后的实现方法和效率问题,却极富挑战。排序的稳定性意味着相同值的元素在排序后能保持原有的先后顺序,这对于保持数据的原有信息非常重要。

2024-03-11 21:48:30 123 1

原创 关于堆、二叉树的题

堆排序是一种排序算法,我们知道堆顶的元素肯定是最大的,所以如果我们想要按照升序排列,则应该建大根堆,这样每一次我们把堆顶的元素(大根堆下堆顶的元素肯定是最大的元素)和最后一个元素做交换,然后我们缩小顺序表(如上图可以看到堆的存储实际上是顺序表的方式)的长度,也就是堆的数据个数,然后我们在从堆顶开始向下调整剩下的数据成大根堆,这样反复下来,就可以完成顺序表的从小到大的排序。这里采用的建堆的方式是一种很巧妙的思想,先找到最后节点的父节点,然后局部调整成为大堆,然后再依次向上找,再调整,直到最后变成大根堆。

2023-12-04 21:07:26 384 1

原创 Linux基本指令

这个指令比较有意思的地方在于,这个指令实现的是和cat基本上相同的功能,但是不用的地方在于,如果文件内容很多,那么使用cat就会出现刷屏的情况,但是使用这个命令则不会出现,而是先打印满一个屏幕,然后可以选择是否继续打印。可以看到,创建了一个新的文件, 那么问题来了,到底是哪一个操作可以清空文件或者创建一个新的文件,答案是重定向“>”。这里的选项也不是必须的选择,查看文件的方式也是如下图所示,是打印在屏幕上,而不是打开文件进行查看。这个命令也称为行过滤命令,可以查找我们需要的文件,把不需要的文件进行过滤。

2023-11-25 20:54:28 743 1

原创 栈、队列和循环队列

关于栈的 C 语言实现,我们需要注意的是,可以使用顺序表实现也可以使用链表实现,每一种不同的实现方式也都有各自的优劣,虽然C++种有封装好的可以直接调用的库我们不需要手动写,但是C语言的实现可以帮助我们更好的理解栈这样的结构。上面就是栈的结构体实现,我们可以看到这里我们使用的是顺序表的方式实现一个栈,由于栈的操作只可以在栈顶的位置,所以我们需要定义一个栈顶的指针,这里使用的一个整型的top,用来标记数组的下标。这里放上力扣的一道题,就是实现循环队列,这咋恶道题中,我们实现队列的方式采用了数组的形式。

2023-11-23 21:02:10 434

原创 顺序表和链表

直接上结构,从上述的结构我们可很清洗的看出来使用 C 语言定义的顺序表,我们这里使用重命名的方式定义一个顺序表的指针的目的是为了使我们的顺序表可以存储其他类型的数据,只需要改变重定义的 int 即可。这里要注意一个问题,我们认为线性表是像一条线一样的连接在一起,这样的认识是逻辑上的,那么在物理层面上来看,并非是连续的方式存储,这是由于内存的开辟有时并非是连续的,例如当原来的空间不够时,那么就需要另外开辟空间,此时开辟的空间和原来的空间在逻辑上是连续的,而在物理上就不一定是连续的了。

2023-11-23 20:37:01 357

原创 程序环境和预处理

那么演变到如今,我们平时写的代码,不管是哪一种语言,都是我们可以很清楚识别的代码,但是这些我们很轻松可以理解的代码,如果原封不动的交给计算机,那肯定是不可以的,所以就需要把我们写的代码通过一系列的操作转换成计算机可以识别的10指令。当然和宏相比函数也有劣势的地方: 1. 每次使用宏的时候,一份宏定义的代码将插入到程序中。2. 更为重要的是函数的参数必须声明为特定的类型。有了这些条件编译,在预处理阶段就可以更好的识别代码中一些问题的存在,例如多个文件互相嵌套调用时,避免重复生成头文件的内容。

2023-10-18 17:28:47 18 1

原创 C语言文件操作

有了文件指针的概念,那么之后就是要明白在文件读写之前,需要先打开文件,在读写结束的时候,需要关闭对应的文件以免造成内存空间的占用。还有一个很重要的概念,那就是文件缓冲区,对于文件缓冲区来说,只需要注意一点,那就是C语言只有在刷新缓冲区或者文件关闭的时候,才会把缓冲区的内容写入文件中,如果不做那就对出现问题。和其他指针相似,每当我们打开一个新的文件的时候,都需要一个新的指针变量来指向对应的文件。C语言中,这样规定了一种文件指针,文件指针的作用就是能够很方便的找到我们要读写的文件。这里附带上菜鸟教程的连接。

2023-10-18 11:12:10 26 1

原创 C语言中自定义的数据类型

2、性能原因,有时候未对其的数据访问处理器需要处理两次,对齐的数据,则只需要进行一次处理。4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的。同一时间只可以使用其中的一个变量,联合体的大小是成员中最大的成员的大小。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。根据下面的例子,展开的解释一下结构体的大小。

2023-09-25 17:47:50 31 1

原创 C语言中的字符函数、字符串函数、内存函数

第一种定义的方式,当对字符进行操作的时候会出现内存报错的问题,第二种定义的方式则不会出现。这是因为在C语言中,第一种定义的方式相当于定义了一个字符串,第二种方式相当于是按照字符数组的方式进行存储。在C语言中,有这样一个头文件<string.h>,这样一个头文件包含了很多对字符、字符串、内存的操作。长度受限制的字符串函数:strncpy、strncat、strncmp。内存操作函数:memcpy、memmove、memset、memcmp。长度不受限制的字符串函数:strcpy、strcat、strcmp。

2023-09-20 21:40:25 29 1

原创 算法题--给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数

答案是可以的,只不过和无穷大哈希数组相比,再进行标记的时候需要多一步判断是否数据在哈希数组中有映射(这里要注意,如果没有映射,那就说明,我们数组中的任何一个数,都比这个数小。相反有映射,我们记录下来即可)之后,遍历哈希数组即可,找到第一个没有标记的元素,就是我们要找的最小元素。第三种情况全部标记:(注意此时我们所有已经标记了原数组中所有的正整数元素),所以原数组最大元素加一就是我们要找的元素。所以,我们换一种思路,观察例子其实不难看出,要找的是最小的正整数,也就表示肯定是要从1开始寻找。

2023-09-06 09:20:34 229 1

原创 数据的存储

可以很清晰的看到这里是按照逐字节大端存储模式,地址是逐渐升高的,所以数据高位存放在低地址处。那么,s=1,M=1.01,E=2。那么从左到右,则是从低位到高位,按照大小端的存储方式,这里我们采用 VS编译器,调用内存来观察一下。从上述的代码可以看出,由于整形和浮点型的存储方式不相同,因此不会像第一个例子一样出现整形提升。这里要重点强调的就是,正数的原反补三码是相同的,所以其实反码的计算方式是针对于负数而言的。当s=1,V为负数。那么,按照上面V的格式,可以得出s=0,M=1.01,E=2。

2023-08-09 17:33:14 31 1

原创 通信专业跨行入门计算机的感受

首先,编程想要学习好就要按照视频->百度->文档的方式(这也是我前几天在研习一款软件文档的时候,一个博主建议的学习方法),视频就是公开的一些高口碑的讲授视频,然后就是自己上手写项目(这一点很重要,任何一门编程语言,他的内容是远远大于你目前看到的,所以学习框架和基础知识,之后上手些项目是很重要的),自己再写的同时,遇到简单的问题可以去百度,找到自己想要的解决方案,如果你发现百度也没有你想要的解决方案,那么你就需要去看官方的文档,官方的文档通常是最直接最清晰的,但是缺点就是文档很大需要自己找所需要的内容。

2023-06-12 17:52:48 64 3

空空如也

空空如也

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

TA关注的人

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