自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 永恒之蓝 (EternalBlue) 漏洞利用原理详解

SMB(Server Message Block)协议是一种网络文件共享协议,主要用于文件和打印机共享。SMB协议允许客户端通过网络访问服务器上的文件、目录和其他资源。在Windows中,SMB协议是默认启用的,用于提供文件共享服务。

2024-06-02 16:50:45 843

原创 C语言顺序表的两种分配方式详解

10// 顺序表的最大容量// 静态分配的数组int length;// 顺序表的当前长度} SqList;// 初始化顺序表SqList L;顺序表SqList使用一个固定大小的数组data来存储元素,其最大容量由宏MaxSize定义。InitList函数初始化顺序表,将长度设置为 0。int *data;// 动态分配的数组// 顺序表的最大容量int length;// 顺序表的当前长度} SqList;// 初始化顺序表。

2024-06-01 15:10:23 727

原创 c语言结构体指针详解

首先,我们需要定义一个结构体。int id;float gpa;Student结构体包含了学生的学号(id),姓名(name),和绩点(gpa定义结构体指针与定义普通指针类似,只不过指向的是结构体类型。

2024-05-29 12:49:34 567 1

原创 空间复杂度详解

空间复杂度是衡量一个算法在运行过程中所需的内存空间大小的量度。它通常用大O符号表示,类似于时间复杂度。例如,空间复杂度为O(1)表示该算法所需的空间是常量,O(n)表示所需空间随着输入的数据量n线性增长。理解空间复杂度对于编写高效的程序非常重要,通过分析变量使用、数据结构以及递归调用栈,可以准确计算出算法的空间复杂度。

2024-05-27 08:50:52 358

原创 c语言大数加法详解

/获取第一个大数的长度//获取第二个大数的长度//取二者较大的一个定义函数num1:第一个大数,类型是字符数组(字符串)。num2:第二个大数,类型是字符数组(字符串)。result:存储结果的字符数组。变量maxLen是用来存储最后结果的长度(还要加一)的,其值应为两个大整数数组中长度较长的那个数组的长度,同时需要考虑到可能的进位情况,所以实际的结果长度还需要加1。carry:表示进位。sum:表示当前位的和。ijk:分别用于遍历num1num2和result的索引。

2024-05-26 12:09:23 707

原创 时间复杂度详解

其中n是问题的规模,f(n)是问题规模n的某个函数。表示随着问题规模n增大,算法执行时间的增长率和f(n)的增长率相同。时间复杂度提供了一种定量的方式来衡量和比较不同算法之间的效率。时间复杂度是衡量算法效率的关键指标,通过分析代码的基本操作执行次数,可以确定其时间复杂度。在编写代码时,选择时间复杂度较低的算法,可以提高程序的运行效率。

2024-05-24 16:42:19 275 1

原创 c++的引用详解

在C++中,引用(Reference)是一个别名或另一变量的另一个名称。引用提供了对现有变量的另一种访问方式,通过引用可以直接操作原变量,而不是其副本。总而言之,引用是一个很强大的特性,可以使代码更加简洁和高效。

2024-05-23 09:13:43 396

原创 c语言结构体对齐及大小计算详解

在c语言中,结构体是一种自定义的数据类型,可以包含多个不同类型的数据成员。当我们定义一个结构体时,编译器会为其分配内存空间,但是为了,结构体的内存布局会经过。很多初学c语言的同学都对结构体的对齐不太了解,此文将详细地解释结构体的内存布局以及讲解如何计算结构体类型的大小。

2024-05-22 12:44:22 936

原创 c语言的内存分配

在c语言中,内存分配主要分为四个区域:栈区(Stack)、堆区(Heap)、数据段(Data Segment,包括静态区)、代码段(Code Segment)。通过了解c语言各个内存区域的分配布局和特点,可以更好地编写和调试C语言程序。特别是在处理复杂的内存管理问题时,合理使用这些内存区域能够提高程序的效率和稳定性。代码段在程序加载时分配内存,通常是只读的,以防止程序意外修改指令。是已初始化的全局变量,存储在已初始化数据段。是未初始化的静态变量,存储在BSS段。是静态局部变量,存储在已初始化数据段。

2024-05-21 12:18:08 405 1

原创 c语言栈堆空间详解

栈是一种数据结构,具有后进先出(LIFO,Last In First Out)的特点。在c语言中,栈空间主要用于存储函数的局部变量和函数调用的上下文信息。堆是一块由程序员控制的内存区域,可以动态分配和释放内存。在c语言中,堆空间通常用于动态分配内存,以适应程序运行时的不确定需求。栈和堆是c语言的两种重要内存区域,各自有其优缺点和适用场景,理解栈和堆的区别对于编写高效、安全的C语言程序至关重要。栈适用于管理函数的局部变量和较小的数据量,而堆则适合处理需要动态分配的大数据量。

2024-05-20 16:55:57 422 1

原创 c语言malloc动态申请内存详解

malloc函数的全称是“memory allocation”,用于在堆空间动态分配指定字节大小的内存空间,并返回指向该内存块的指针。malloc是C语言中非常重要的内存管理函数,通过它可以实现动态内存分配,提高程序的灵活性。使用malloc时需要特别注意内存泄漏和野指针的问题,确保不再需要使用内存时及时释放掉。此外,合理使用malloc也可以方便地实现动态数组和其他的数据结构。

2024-05-19 13:44:52 364 1

原创 c语言中的函数值传递与指针传递

值传递:传递变量的副本,函数内部对变量的修改不会影响到原始变量。适用于不需要函数修改原始数据的情况。指针传递:传递变量的地址,函数内部可以通过指针直接修改原始变量的值。适用于需要函数修改原始数据的情况。

2024-05-18 17:04:52 252

原创 c语言中的越界访问详解

越界访问是指程序试图读取或写入不属于其合法范围的内存地址。常见的越界访问情况包括数组越界、指针越界和字符串越界。越界访问是C语言中常见且严重的问题,可能导致程序崩溃、数据损坏甚至安全漏洞。通过仔细检查数组和指针的边界、使用安全的字符串处理方法、动态内存分配时注意边界,以及避免使用gets函数,改用fgets函数等更安全的替代方案,可以有效地避免越界访问问题,从而提高程序的稳定性和安全性。

2024-05-17 15:30:22 551

原创 NUIST第三届程序设计团体赛试题

2021-12-20 10:56:28 103

空空如也

空空如也

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

TA关注的人

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