自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 初识模板-初阶

函数模板模板:模板推演:推演模板的具体类型模板实例化:实例化生成具体的函数函数模板是在编译之前做推演实例化,生成对应的函数,将模板中的参数替换掉auto不能做参数和返回值,定义调用的变量的时候使用函数模板并没有少写代码,而是交给编译器使用,让其做推演实例化用法上可以认为内置类型有构造函数,跟自定义类型一样使用隐式类型转换:c++沿袭c语言搞了个相近类型相近类型:表达的意义差不多,例如int ,char double,意义都是表示数据大小or显示实例化调用

2021-11-22 18:03:38 504 1

原创 内存管理的问题

内存管理过度阶段int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "abcd"; char* pChar3 = "abcd"; int* ptr1 = (int*)malloc(sizeof (int)* 4); int* ptr2

2021-11-22 16:37:52 841 1

原创 类和对象的基础认识

类和对象定义一个类就是定义一个新的类型c语言中定义一个含有多种类型的新类型用结构体来定义c语言面向过程定义一个类型认为,数据方法是分离的,数据就是数据,方法是方法。(函数也叫方法)c++面向过程,数据和方法封装在一起struct在c++中也可以定义类,但是在c++中更喜欢用class关键字来定义类类的定义class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。 类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类

2021-11-07 11:52:55 475

原创 栈和队列的实现【1】

栈和队列栈一种特殊的线性表,其只允许在固定的一段进行插入和删除,进行数据的插入和删除操作的一端称为栈顶,另一端称为栈底满足后进先出的规则(先对栈顶的数据)压栈 入数据在栈顶出栈 出数据也在栈顶栈:一种入栈顺序,多种出战顺序栈的实现推荐使用数组实现主要函数接口的实现bool StackEmpty(ST * ps){ assert(ps); return ps->top = 0;}//初始化void StackInit(ST * ps){ ass

2021-10-14 11:59:06 134 2

原创 八种排序方式

八种排序排序的稳定性假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,A1=A2,且A1在A2之前,而在排序后的序列中,A1仍在A2之前,则称这种排序算法是稳定的稳定性本质是维持具有相同属性的数据的插入顺序 ,如果后面需要使用该插入顺序排序,则稳定性排序可以避免这次排序例如在答题竞赛中,只有三枚奖牌,金银铜,金牌已经选出,如果两者都得99分,在分值上一样但是在提交顺序上有先后之分,这时排序的稳定性就体现出来了插入排序直接插入排序

2021-10-11 18:46:35 397 2

原创 【哥俩好】堆排序及其二叉树的实现

堆排序及其二叉树的实现给了一个没有顺序的数组要去建堆,向下调整原本是要从最后一个子树开始调整,但是最后一个叶子所在的子树,本身既可以看作是小堆,也可以看作是大堆,所以从倒数第一个非叶子节点,也就是最后一个节点的父亲节点开始调整。在物理上是数组是连续的,但在逻辑上是二叉树形式堆排序升序建大堆,降序建小堆排序按照生活中的思维是从小到大排序,应该是建小堆,但是如果是建小堆可以解决第一个数是最小的,那么第二小的怎么找呢,再向下调整一下建小堆找最小的吗,那显然时间复杂度更复杂,如果是建大堆,建好堆后第一个是

2021-10-05 19:49:06 168

原创 动态内存管理和常见的错误

动态内存管理动态内存开辟是在堆区上进行开辟空间void *malloc( size_t size );//某些情况下malloc的默认返回值是void * 的,这时需要强制类型转换一下int * p = (int *)malloc(40);free(p);p = NULL;//free 回收要手动 设置为NULLmallocmalloc 函数申请的空间的值是随机值 要和free成对出现,不然容易忘记将在堆区上开辟的空间还给操作系统这个函数向内存申请一块连续可用的空间,并返回

2021-10-02 20:29:05 129

原创 尺有所短,寸有所长(顺序表和链表)

链表和顺序表顺序表链表顺序表和链表的区别二级目录三级目录顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改顺序表又可分为静态顺序表和动态顺序表 静态顺序表:使用指定长度的数组存储元素。动态顺序表:使用动态开辟的数组存储元素。使用场景静态顺序表只适用于明确知道所需存储多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以基本都是使用动态顺序表,根据需要,动态的分配空间大小。链表链

2021-08-31 12:08:27 128 3

原创 自定义类型之结构体和位段

自定义类型结构体结构体自引用结构体内存对齐内存对齐的意义修改默认对齐数结构体的位段结构体结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量,可以是标量、数组、指针,甚至是其他结构体struct是结构体关键字结构体特殊的申明匿名结构体类型 (不完全初始化)尽管两个结构体元素内容相同,但是没有自己的标签,匿名结构体只能用一次,这简直就是一次体验卡嘛struct{ int a; char b; float c;}x;struct{ int a; c

2021-07-08 13:19:30 146

原创 常见的内存操作函数

内存操作函数只考虑内存块,不考虑数据类型memcpyvoid * memcpy ( void * destination, const void * source, size_t num )size_t num 拷贝的个数单位时字节函数在遇到 ‘\0’ 的时候并不会停下来函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置如果source和destination有任何的重叠,结果是未定义的void * my_memcpy(void * dest

2021-07-03 21:15:58 78

原创 字符串函数是啥

memcpy6/8 19.14 int数组实现拷贝,字符串拷贝看内存int 是01 00 00 00 02 00 00 00不一样memmovememset四级标题五级标题六级标题

2021-07-02 21:07:24 164

原创 数据的存储

数据的存储基本的内置数据类型有以下内容类型的基本归类整数在内存中的存储形式char类型在内存中的储存形式二级目录三级目录基本的内置数据类型整形类基本的内置数据类型有以下内容char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数类型的基本归类在这里主要介绍整型类和浮点类整数在内存中的存

2021-05-23 22:42:31 228 10

原创 简易三子棋实现

简易三子棋实现三子棋三子棋描述三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时候会出现和棋的情况。完成游戏的逻辑#include <stdio.h>#include"game.h"void menu(){ printf("********************************************\n"); printf("******

2021-05-09 22:34:12 189 2

空空如也

空空如也

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

TA关注的人

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