- 博客(26)
- 收藏
- 关注
原创 C++ 内存管理
在C语言中,我们已经了解了三个动态内存管理的函数——malloc,calloc以及realloc,通过动态内存开辟,申请和释放空间更加的灵活在C++中,C语言的内存管理方式可以继续使用,但是在C++中又稍显不足,因此C++提出了自己的内存管理方式:new和delete。下面我们就结合代码来讲解一下new和delete两个通过调试-监测内存可以看到,ptr2里20个数据的确被初始化为0对于自定义类型,也可以通过new和delete来申请和释放空间,同时会自动调用各自的构造函数和自购函数。
2024-11-07 16:31:52 457
原创 C++ 类与对象(上)
在C++中,类是一种,类似于C语言中的struct定义结构体。那么什么是对象呢?对象其实是类的类型实例化,就如我声明了一个栈,然后用栈的声明创建了一个栈,被创建的这个栈就是对象。类其实是对象的一种抽象描述,类似于一张施工的图纸,图纸上画了这个工程有什么东西,但是这张图纸上的内容在真实世界中并没有真实的东西,需要现实的人们根据图纸在现实世界创造出图纸里面的内容。对于类的定义,以class为关键字,后面加,{}中的内容为主体,与C语言结构体一样,{}后面要加分号(;
2024-10-20 20:14:58 697
原创 九种排序,一次满足
在这里我们可以设置两个循环来实现:外循环控制当前要排序的元素下标,内循环控制当前下标要比较的次数五个元素,下标为0-4,当下标为1的元素进行排序时,需要和后面的元素比较三次。
2024-10-18 15:58:29 1240 1
原创 数据结构-二叉树_堆
堆的底层结构是数组,和顺序表很相似,其实在定义结构体中也是十分相似的//堆的定义//堆的底层为数组//指向动态开辟内存的地址int size;//堆的有效数据个数//堆的最大容量}HP;
2024-10-10 19:24:03 1326 2
原创 数据结构——栈与队列的实现(全码)
栈是一种特殊的线性表,栈内数据遵循先进后出(LIFO)的原则,对于栈,只能在入栈操作和出栈操作是在栈的同一侧进行的,如图示:对于栈这种数据类型,我们可以采用链表或者数组来实现,但是我们一般。
2024-10-07 17:33:28 809
原创 N皇后问题
因为我们是从行来摆放的,如果行数当前的列数不能摆放皇后,已经通过a[row]来移除皇后,在后面的列数重新寻找符合摆放皇后的列,因此在check函数中,我们不需要考虑判断行的摆放。所谓N皇后问题,就是在一个N*N棋盘上放置N个皇后,每一个皇后所在的行,列以及它的对角线都只能有其自身,我们需要统计N个皇后时满足皇后布置的情况。当我们摆放到最后一行(也就是棋盘的边界)时,证明当前的N皇后情况摆放完毕,那么统计皇后的摆放的计时器cnt++如果此时还不是边界,也就是1-n行的位置,那么我们每一次摆放皇后的时候,
2024-09-24 16:35:14 328
原创 通过代码解释与实现文件的操作
而根据数据的组织形式,数据文件也分为文本文件和二进制文件。所谓二进制文件,就是内存中的数据不通过任何形式的转换直接输出到外存的文件中,那么这就是二进制文件,对于二进制文件,我们人是无法读懂的,只有在输出到外存时通过ASCII码的形式存储方可读懂。
2024-09-19 20:51:26 916
原创 由我们自己定义的类型——结构体
为什么基本上只能使用一次呢,我们可以这样理解,匿名结构体是重命名结构体的蓝图,你将数据放入 匿名结构体,就破坏了原本的蓝图,那么这个蓝图就失去了蓝图的权威性,没人认可它,你就算后续再往里面存放数据,数据也不想进入这个结构体。根据在内存中成员变量的内存分配,结构体在内存中是存在内存浪费的,因此我们设计结构体时要既要满足对齐,又要节省空间。上面的代码创建了一个名为A的结构体,并对结构体成员变量进行赋值,这种操作称作初始化。下面的结构体没有进行结构体类型重命名,这种结构体称作匿名结构体,基本上只能使用一次。
2024-09-14 20:10:07 766
原创 浮点数在内存中的存储——C语言
在数据类型中,浮点数也是很常见的,而对于浮点数的类型也多种多样:有double、float、long double类型。
2024-09-11 17:15:48 745
原创 qsort的模拟实现
对于qsort,返回的类型是void类型,传递的形参有四个,分别是待排序数组的第一个对象首元素的地址;在交换函数中,我们不确定待排序的数组是什么类型,所以我们直接通过字节来交换,因为数组中元素类型一致,通过强制转换成char类型再解引用进行字节的交换。在比较函数中,无论是整型还是字符型元素,在计算机中都是以ASCII码的形式进行存储与计算,那么比较函数的返回值类型应该是int 类型。模拟实现中的比较函数与库函数中的交换函数一致,只需要注意此时排序的是什么类型的数组。最后是最主要的逻辑:冒泡排序。
2024-09-05 20:19:52 443
原创 字符串函数(2)
相对与strcat函数,strncat可以控制拼接的字符个数。我们先来看一下库函数中strncat的使用,将arr2中的两个字符拼接到arr1中:对于模拟实现中,我们需要让指针遍历arr1直到找到arr1中'\0'往前一位的位置,随后将arr2进行拼接,通过for循环中的条件表达式进行控制拼接的个数size。程序运行的结果与使用库函数一致,模拟实现成功。
2024-09-05 15:08:29 256
原创 字符串函数
strlen用来计算字符串的长度,从给定起始位置到'\0'。函数的返回值是size_t,是无符号的。传递给strlen函数的形参是字符串的首元素地址。对于库函数strlen,使用方法如下:我们可以看到,strlen计算得到arr字符型数组的长度为6,可知strlen计算的结果不包括'\0'。方法1,通过指针变量字符数组,指针每遍历一个字符,计数器自加,最后返回计数器的值就是字符数组的长度。
2024-09-04 19:51:36 887
原创 C语言——简单扫雷小游戏(末尾有全码)
在下面方格中,有若干个雷随机分布在格子中,当玩家选择任意一个格子时,若格子不是“雷”,则会显示以此格子为中心,显示附近八个格子的“雷”的数量。如果玩家选择的区域是“雷”则游戏结束下面让我们用C语言一步步实现这个游戏。
2024-08-03 21:51:49 1146
原创 循环语句(C语言)
do....while循环与while循环相似,区别是 do....while语句要多执行一次语句。循环语句有三种,分别是for循环,while循环,do....while循环。continue语句的作用是跳过本次循环,执行下一次循环。break语句的作用是终止循环,执行循环之外的语句。break语句与continue语句在循环的运用。只有表达式判断非0时才进入while循环。do.....while循环。代码实现:检测整数是几位数。
2024-07-21 13:09:04 186 1
原创 栈的定义和运算(数据结构)
2.先进栈3,2,1,出栈2次,进栈4,5,6,7,再全部出栈,输出每次入栈,出栈序列。1.依次进栈数据为1,2,3,4,5,再全部出栈,输出出栈序列。依次进栈数据为1,2,3,4,5,再全部出栈\n"栈的定义(栈顶指针,栈顶指针,栈的最大容量)进栈4,5,6,7,再全部出栈\n"入栈成功,入栈顺序:%d\n"进栈3,2,1,出栈2次\n"入栈成功,入栈顺序:%d\n"进栈4,5,6,7,再全部出栈。入栈成功,入栈顺序:%d\n"进栈3,2,1,出栈2次。出栈顺序:%d\n"出栈顺序:%d\n"
2024-05-05 13:10:37 426
原创 链表的定义和运算(数据结构)实验
2.从键盘上依次输入21、18、30、75、42、56,逆序创建单链表(前插法),并输出单链表中的各元素值。3.分别在单链表的第3个位置和第9个位置插入67和10,给出插入成功或失败的信息,并输出单链表中的各元素值。4.删除单链表中的第6个数据元素和第8个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值。插入成功,此时链表元素为:"插入成功,此时链表元素为:"插入失败,此时链表元素为:"删除成功,此时链表元素为:"删除成功,此时链表元素为:"插入失败,此时链表元素为:"请输入插入元素的位置:"
2024-05-05 13:09:14 611 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人