自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 12345

再不用镜像我就去s。

2023-05-02 00:52:57 105 1

原创 windows以太坊联盟链搭建自用

每个结点都要把另外三个结点的上一步放到括号里。在每个结点路径下cmd打开四个框输这4条。

2023-03-01 17:40:53 387

原创 STL简介

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2022-12-27 22:49:43 131

原创 模板初阶 泛型编程 函数模板 类模板

在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用,比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型也是如此。类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟,然后将实例化的类型放在中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。编写与类型无关的通用代码,是代码复用的一种手段,模板是泛型编程的基础。

2022-12-27 13:09:01 99

原创 内存管理 new delete 定位new operator new与operator delete函数 malloc/free和new/delete的区别 内存泄漏

如果申请的是内置类型的空间,new和malloc,delete和free基本类似,不同的地方是: new/delete申请和释放的是单个元素的空间,new[ ]和delete[ ]申请的是连续空间,而且new在申 请空间失败时会抛异常,malloc会返回NULL。1. 工程前期良好的设计规范,养成良好的编码规范,申请的内存空间记着匹配的去释放 ps:这个理想状态,但是如果碰上异常时,就算注意释放了,还是可能会出问题,需要下一条智能指针来管理才有保证。定位new表达式在实际中一般是配合内存池使用。

2022-12-27 10:47:30 98

原创 类和对象(3)初始化列表 static成员 友元 内部类 匿名对象 拷贝对象时的一些编译器优化

问题:现在尝试去重载operator

2022-12-26 15:43:10 96 2

原创 类和对象(2)构造函数 析构函数 拷贝构造函数 运算符重载 Date类实现 const成员

如果一个类中什么成员都没有,简称为空类任何类包括空类在什么都不写时,编译器会自动生成以下6个默认成员函数默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。

2022-12-25 20:13:47 69

原创 类和对象(1)

classclassName{//类体:由成员函数和成员变量组成};//一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。

2022-12-24 22:07:17 81

原创 C++基础(2)引用 内联函数 auto for循环 nullptr

auto作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。

2022-12-24 15:27:07 127

原创 C++基础(1)C++关键字 命名空间 C++输入输出 缺省参数 函数重载

定义命名空间,需要使用到。

2022-12-23 14:33:25 57

原创 堆 堆的基本操作 二叉树的顺序结构及实现

3.二叉树的顺序结构及实现 3.1 二叉树的顺序结构 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费,而满二叉树或完全二叉树更适合使用顺序结构存储,现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段3.2 堆的概念及结构二叉树用数组存储,只能是满二叉树或完全二叉树小根堆: 1、完全二叉树 2、树中所有父亲都小于等于孩子大根堆: 1、完全二叉

2022-07-10 17:10:20 823 1

原创 树的概念及结构 二叉树的概念及结构

1.树概念及结构1.1树的概念 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合,把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,叶朝下有一个特殊的结点,称为根结点,根节点没有前驱结点 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树,每棵子树的根结点有且只有一个前驱,可以有0个或多个后继因此,树是递归定义的 .

2022-05-21 13:18:15 176

原创 栈和队列 面试题 概念选择题 数据结构 C语言实现

1.括号匹配问题2.用队列实现栈请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作3.用栈实现队列

2022-05-20 16:49:23 301

原创 队列 基本操作 链队列 C语言实现 数据结构

2.队列 2.1队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头2.2链队列的实现 队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低#include<stdio.h>#include<assert..

2022-05-16 16:34:54 181

原创 栈详解 顺序栈 基本操作 C语言实现 数据结构

一、栈1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底,栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则1.2栈的实现栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些,因为数组在尾上插入数据的代价比较小顺序栈基本操作#include<stdio.h>#include<stdlib.h>#incl..

2022-05-14 00:44:45 1130

原创 带头双向循环链表 双向链表 基本操作 C语言实现 数据结构 顺序表和链表的区别

3.5 双向链表的实现结构复杂,操作简单

2022-05-12 12:40:46 199

原创 链表(2) 链表面试题 C语言实现 数据结构 删除所有相同的值 链表反转 返回中间结点 返回倒数第k个结点 合并两个有序链表 链表划分 判断链表是否为回文结构 判断链表是否相交 判断链表中是否有环等等

3.4 链表面试题第一题删除链表中等于给定值 val 的所有结点并返回新的头节点struct ListNode* removeElements(struct ListNode* head, int val){ struct ListNode*pre=NULL; struct ListNode*p=head; while(p!=NULL) { if(p->val==val) ..

2022-05-11 20:46:31 341

原创 链表(1)C语言实现 单链表 无头结点 基本操作 无头结点单链表的基本操作 详解 链表的概念及结构 数据结构

3.链表 3.1 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的注意:1.从上图可看出,链式结构在逻辑上是连续的,但是在物理上不一定连续2.现实中的结点一般都是从堆上申请出来的3.从堆上申请的空间是按照一定的策略来分配的,两次申请的空间可能连续也可能不连续3.2 链表的分类1. 单向或者双向2. 带头或者不带头 3. 循环或者非循环3.3 单链表的实现 ...

2022-04-28 16:14:11 2425 3

原创 顺序表 数据结构 顺序表基本操作 C语言实现 顺序表详解

1.线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列,线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线,但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储2.顺序表 2.1概念及结构 顺序表就是数组,但是数据必须从第一个位置开始连续存储顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况

2022-04-23 17:57:31 2593 2

原创 数据结构 复杂度讲解 时间复杂度 空间复杂度

一、数据结构前言数据结构:内存中存储管理数据的结构数据结构和数据库的区别:本质都是存储管理数据数据结构--在内存中存储管理数据 数据库--在磁盘中存储管理数据算法:对数据按要求进行某种处理。查找、排序数据结构和算法的关系:你中有我,我中有你二、算法的时间复杂度和空间复杂度1.算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度算法运行时需要耗费时间资源和空间(内存)资源 ,因此衡量一个算法的好坏,一般 是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度

2022-04-19 20:31:59 1244

原创 文件操作(水)

1. 为什么使用文件通讯录中的信息是放在内存中的,程序退出后,再次运行,又得输入数据,数据写到文件中,就可以持久化了2. 什么是文件磁盘上的文件是文件,但是在程序设计中,一般文件有两种:程序文件、数据文件(从文件功能的角度来分类)2.1 程序文件 包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境 后缀为.exe)2.2 数据文件 文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文

2022-04-07 10:43:15 56

原创 函数详解(1)函数 函数分类 库函数 自定义函数 函数的参数 函数的调用 练习

1.函数数学:f(x)=2*x+3计算机:子程序,是一个大型程序中的某部分代码, 由一个或多个语句块组成,它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏,这些代码通常被集成为软件库2.C语言中函数的分类1.库函数2.自定义函数2.1库函数具有基础功能,不是业务性的代码,开发的过程中每个程序员都可能用的到,为了支持可移植性和提高程序的效率,所以C语言的基础库中提供了一系列类似的库函数,把常用的一些功能实现成.

2022-04-03 21:09:22 335

原创 柔性数组 柔性数组使用

6. 柔性数组 结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员struct s1{ int num; double d; int arr[ ];//柔性数组成员};struct s2{ int num; double d; int arr[0];//柔性数组成员};6.1 柔性数组的特点:结构中的柔性数组成员前面必须至少一个其他成员sizeof 返回的这种结构大小不包括柔性数组的内存包...

2022-04-01 10:24:47 223

原创 动态内存管理 动态内存函数介绍 malloc free calloc realloc 常见的动态内存错误 几个经典的笔试题 C/C++程序的内存开辟

1. 为什么存在动态内存分配 int val = 20;//在栈空间上开辟四个字节 char arr[10] = {0};//在栈空间上开辟10个字节的连续空间 上述的开辟空间的方式有两个特点: 1. 空间开辟大小是固定的2. 数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配,有时候我们需要的空间大小在程序运行的时候才能知道,数组的编译时开辟空间的方式就不能满足了栈区:局部变量,函数的形式参数堆区:malloc,free,calloc,realloc,动态

2022-03-29 09:31:58 132 1

原创 通讯录 C语言 静态通讯录 动态通讯录 增删查改 排序 大作业

一、通讯录功能:1.保存1000个联系人的信息,一个人的信息:名字,性别,年龄,电话,住址2.增加联系人3.删除联系人4.修改联系人5.查找联系人二、函数1.通讯录初始化void initcontact(contact*pc)//通讯录初始化{ assert(pc); pc->sz=0; memset(pc->data,0,sizeof(pc->data));}2.增加联系人void addcontact(conta

2022-03-27 11:20:46 637

原创 自定义类型详解 结构体详解 结构体大小的计算 位段 位段的内存分配 位段的跨平台问题 位段的应用 枚举 枚举类型 枚举的优点 联合 共用体 联合大小的计算 联合的特点 联合类型的定义 大小端存储的判断

一、结构体1.结构体的声明1.1结构结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2结构的声明struct tag { member-list; }variable-list;struct stu{ char name[20]; int age; double score;};struct stu s1;//全局变量int main(){ struct stu s2,s3;//局部

2022-03-23 13:13:43 87 1

原创 字符串和内存函数(2)strtok函数 strerror函数 字符分类函数 字符转换函数 内存操作函数 memcpy函数及模拟 memmove函数及模拟 memcmp函数 memset函数

9.strtokchar * strtok ( char * str, const char * sep )sep参数是个字符串,定义了用作分隔符的字符集合 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标 记。 strtok函数找到str中的下一个标记,并将其用\0 结尾,返回一个指向这个标记的指针(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容 并且可修改) s

2022-03-23 12:42:09 122

原创 字符串和内存函数(1)strlen及模拟 strcpy及模拟 strcat及模拟 strcmp及模拟 strncp及模拟 strncat及模拟strncmp函数 strstr及模拟

C语言没有字符串类型一、函数介绍长度不受限制的字符串函数:strcpy strcat strcmp1.strlen1)字符串末端隐藏了一个\0,strlen数\0之前有几个字符char arr1[ ]="abcdef";char arr2[ ]={'a','b','c','d','e','f'};char arr3[ ]={'a','b','c','d','e','f',‘\0’};char arr4[10]={'a','b','c','d','e','f'};int

2022-03-20 12:04:46 441

原创 分支和循环语句(2)do...while循环 do...while语句中 break continue作用 二分查找 goto语句 关机程序

5)一道笔试题//请问循环要循环多少次?int main(){ int i = 0; int k = 0; for(i =0,k=0; k=0; i++,k++)//判断语句k=0是赋值0为假不会进入循环 k++; }3.do...while()循环1)1 do语句的语法:do 循环语句; while(表达式); ...

2022-03-18 14:45:30 960

原创 指针进阶(4)指针和数组笔试题解析 一维数组 字符数组 二维数组 指针 sizeof strlen 数组名

九、指针和数组笔试题解析数组名:通常是数组首元素地址但是有两个例外1.sizeof(数组名),这里数组名表示整个数组,计算的是整个数组的大小2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址sizeof时一个操作符计算的是对象所占内存的大小,单位是字节,不在乎内存中存放的是什么只在乎内存大小strlen是库函数,求字符串长度,从给定的地址向后访问字符,统计\0之前出现的字符个数1.一维数组int main(){ int a[] = {1,2,

2022-03-15 23:44:14 404

原创 指针进阶(3)指向函数指针数组的指针 回调函数 qsort函数 模拟实现qsort(采用冒泡的方式)

七、指向函数指针数组的指针int add(int x,int y){ return x+y;}int main(){ int arr[10]={0}; int(*p)=&arr;//p是数组指针 int* arr[5]; int*(*p2)[5]=&arr2; //函数指针 int (*pf)(int,int)=&add;

2022-03-13 12:03:36 671

原创 分支和循环语句(1)if语句 switch语句 while循环 do...while循环 for循环 break作用 continue作用

C语言是结构化的程序设计语言1.顺序结构2.选择结构 if、switch3.循环结构 while、for、do while一、什么是语句控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。 可分成以下三类: 1. 条件判断语句也叫分支语句:if语句、switch语句; 2. 循环执行语句:do while语句、while语句、for语句; 3. 转向语句:break语句、goto语句、continue语句、ret

2022-03-12 16:09:37 2057

原创 指针进阶(2)函数指针 函数指针数组 数组传参 指针传参

//指针数组:存放指针char* arr[5];//数组指针:指向数组的指针int ar[10]={0};int (*p) [10]=&arr;int arr[5];//arr是一个整型数组,每个元素是int类型的,有5个元素int *parr1[10];//parr1是一个数组,每个元素是int*类型的,有10个元素int (*parr2)[10];//parr2是一个指向数组的指针,指向的数组有10个元素,每个元素的类型是intint (.

2022-03-10 23:11:10 151

原创 初识C语言(1)(2)(3)(4) C语言入门 保姆级教程 变量 常量 字符串 转义字符 操作符 关键字 字符串 指针 函数 结构体 数组 选择语句 循环语句

一、如何写C语言代码1.编译器2.创建项目3.创建源文件4.写代码5.编译+链接+运行项目名字不要汉语,不要特殊字符,不要加空格,项目路径一般为你想要的路径C语言中,一般创建.c源文件,.h头文件二、第一个C语言代码首先写主函数int main(){ return 0;}大括号:函数体#include<stdio.h>int main(){ printf("hehe\n"); return 0;}prin

2022-03-09 21:21:57 508

原创 指针进阶(1)字符指针 数组指针 指针数组

1.指针是个变量,用来存放地址,内存会划分为小的内存单元,每个内存单元都有一个编号,这个编号就被成为地址,把地址也叫指针。内存编号=地址=指针指针或地址要储存就可以存放到指针变量中2.指针的大小32位平台4字节64位平台8字节3.指针有类型,指针的类型决定了指针+-整数的步长,指针解引用操作时候的权限4.指针的运算:指针+-整数指针-指针指针的关系运算一、字符指针int main(){ char ch='w'; char *pc=&

2022-03-03 23:49:22 51

原创 数据存储(2)浮点型数据存储

#include<stdio.h>int main(){ char a=-128; printf("%u\n",a); return 0;}char范围-128—127-128原码10000000000000000000000010000000反码1111111111111111111111111111011111111补码111111111111111111111111111110000000截断10000000——a最高位有符号char%u:.

2022-03-02 12:14:31 151

原创 调试结尾+数据的存储

一、编程常见的错误1.编译型错误==语法错误编译期间发现,容易解决。2.链接型错误链接期间发现,无法解析的外部符号,无法解析的外部命令。int main(){ int a=20,b=10; int c=Add(a,b); printf("%d\n",c);}没有头文件,没定义Add函数或函数名字写错。解决方法:找名字3.运行时错误借助调试解决的错误,最难。二、数据类型介绍unsigned signedshort=signed short

2022-02-27 15:59:07 75

原创 扫雷C语言

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<time.h>#include<stdlib.h>#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define MINE_COUNT 10void menu(){ printf("请选择\n"); printf("**********************.

2022-01-22 18:59:28 88

原创 三子棋 C语言实现 保姆级教程 大作业

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 步骤 1.主函数 2.数组初始化 3.打印棋盘格 4.玩家下棋 5.电脑下棋 6.判断结果 总结前言没用多文件是因为觉得麻烦,头文件引来引去更懵了,几乎每个文件都把所有的都引了一遍,好累写的时候翻来翻去,总是找不对文件好浪费时间,所以没有分开写二、步骤1.主函数int main(){ int input; srand((unsigned int...

2022-01-22 13:15:31 2405 1

空空如也

空空如也

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

TA关注的人

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