这篇文章我们一起来学习一下C/C++程序的内存开辟以及柔性数组!!!1. C/C++程序的内存开辟C和C++的内存开辟方式是非常类似的,这篇文章我们就来学习一下C/C++程序的内存开辟。在之前的文章里其实我们简单的介绍过C语言中的内存划分。 大致可以分为:栈区,堆区和静态区:那今天,我们来更加细致的细致的讲解一下C/C++程序的内存开辟。 首先,我们来看一张 ......
151
0
0
2024-05-04
这篇文章,我们一起来学习C语言中的动态内存管理!!!1.为什么存在动态内存分配我们先来想一下,我们现在掌握的开辟内存的方式是什么:是不是就是直接创建一个变量或者数组,然后操作系统给我们分配空间:代码语言:javascript复制int main() { int val = 20;//在栈空间上开辟4个字节 int arr[10] = { 0 };/ ......
157
0
0
2024-05-04
上一篇文章我们学习了多态的语法,想必大家都会有很多疑问,这篇文章,我们就来带大家看看多态是如何实现的,它底层的原理是怎样的…前言需要声明的,本文中的代码及解释都是在vs2022下的x86程序中,涉及的指针都是4bytes。 如果要其他平台下,部分代码需要改动。比如:如果是x64程序,则需要考虑指针是8bytes问题等等1. 虚函数表指针与虚函数表首先,我们来 ......
158
0
0
2024-05-03
1.游戏规则扫雷的详细规则是随便点开一个方格,根据展开方格的数字去推断其相邻九宫格内未展开方格下面是否是地雷,最终任务就是点开所有没有地雷的方格,以找出所有的地雷。 要取得高分,就必须在尽量短的时间内清除所有的地雷。 得分计算方法:扫雷得分=分数基数X难度系数/扫雷时间,其中分数基数为10000,难度系数=每局地雷数/每局总格子数,扫雷时间按毫秒计算。所需要 ......
174
0
0
2024-05-03
1.实现功能本文将采用C语言来实现一个简单的通讯录,要求功能如下代码语言:javascript复制//实现一个通讯录 //1.可以保存100个人的信息 //2.增加人的信息 //3.删除指定联系人的信息 //4.查找 //5.修改 //6.排序 //7.显示所有联系人 下面我们来一步步实现2.实现细节与具体思路1.主程序设计首先,设计一个主程 ......
167
0
0
2024-05-03
1. 单继承在上一篇文章中,我们给大家演示的其实都是单继承。单继承的概念:单继承:一个子类只有一个直接父类的继承关系为单继承2. 多继承然后呢C++里面还支持多继承,那什么是多继承呢?一个子类有两个或以上直接父类时称这个继承关系为多继承比如一个类表示汽车,另一个类表示飞机。现在你希望创建一个新的类,使得它既可以像汽车一样在地上跑,又可以像飞机一样在天上飞,即 ......
156
0
0
2024-05-03
一.AVL树的概念我们知道,二叉搜索树的效率很高,如果数据有序或接近有序二叉搜索树将退化为单支树,查 找元素相当于在顺序表中搜索元素,效率低下,为了解决这个问题,AVL树(平衡二叉树)就出现了。AVL树的性质:它的左右子树都是AVL树左右子树高度之差(简称平衡因子)的绝对值不超过1(-1/0/1)(右子树-左子树)上图就是一个AVL树,每个节点上的数字为这个 ......
143
0
0
2024-05-03
这篇文章我们来学习排序。1. 排序的概念及其运用1.1 排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在 ......
160
0
0
2024-05-03
前言我们在前面文章学到的数据结构:顺序表、链表,不管是单链表还是带头双向循环链表,以及后面的栈和队列。它们呢,其实都属于一类数据结构——线性表。那从这篇文章开始:我们将开始学习数据结构中的非线性结构,今天我们先来学习第一种——二叉树。1. 树的概念及结构那要学习二叉树,我们首先要知道什么是树。所以我们先来了解一下数据结构中树的概念及结构。如果不提数据结构,只 ......
157
0
0
2024-05-03
前言在前面的文章中,我们已经学习了STL中底层为红黑树结构的一系列关联式容器——set/multiset 和 map/multimap(C++98)1. unordered系列关联式容器在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log_2 N,即最差情况下需要比较红黑树的高度次。 在C++11中,STL又提供了4个un ......
190
0
0
2024-05-02
一.再谈构造函数构造函数其实分为: 1.函数体赋值2.初始化列表 之前所讲到的构造函数其实都是函数体赋值,那么本篇文章将会具体讲述初始化列表。初始化列表语法以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟 一个放在括号中的初始值或表达式。代码语言:javascript复制class Date { public: Date(in ......
164
0
0
2024-05-02
首先我们来看一下扫雷游戏 这是一个扫雷游戏,所以我们要做的第一步就是把这个棋盘初始化并打印出来。这就用到了二维数组,初始化棋盘之后我们就要把雷布置在棋盘里面,然后进行排查雷,这是我们实现扫雷游戏的一个大体思维框架。还需要注意的是,我们创建游戏的过程中需要用到两个源文件(game.c test.c)和一个头文件(game.h),在头文件中包 ......
176
0
0
2024-05-01
实现三子棋的思路创建游戏的初始化界面创建一个名为board的二维数组并且初始化将棋盘进行搭建并且打印出来玩家进行下棋并且打印电脑下棋并且打印判断结果还需要注意的是,我们创建游戏的过程中需要用到两个源文件(game.c test.c)和一个头文件(game.h),在头文件中包含了程序所需的各种头文件并且实现对各种函数的声明,而源文件test.c用于引用函数,g ......
162
0
0
2024-05-01
一.链表的概念和结构链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的链表其实有很多种类: 1.单向 双向 2.带头 不带头 3.循环 不循环 其中共能组合出8种形式的链表; 这篇文章讲的是结构最简单的链表,也就是单向不带头不循环链表,即单链表。单链表中的元素称为节点,节点有一个数据data,还有一个结构体 ......
165
0
0
2024-04-30
一.前言其实顺序表的增删查改和前面的通讯录差不多,可以说通讯录的底层原理就是顺序表。如果你会写通讯录,那么顺序表也不是问题。所以这篇文章不会讲得太详细,如果你有不懂的地方,请看前面通讯录的实现过程,那里讲的非常详细。通讯录二.顺序表1.概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储; 在数组上完成数据的增删查 ......
179
0
0
2024-04-30