自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态内存管理

动态开辟的内存。malloc函数只负责在堆区申请空间,并且返回起始地址,不初始化内存空间calloc函数在堆区上申请空间,并且初始化为0,返回起始地址常见内存开辟的错误对空指针进行解引用对动态开辟空间的越界访问对非动态开辟内存使用释放使用释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放(内存泄漏)笔试题1...

2022-07-07 16:54:07 123 1

原创 自定义类型

c语言内置类型

2022-07-06 16:41:47 117

原创 字符函数和字符串函数

求字符串长度strcpy字符串拷贝模拟实现strcat字符串追加模拟实现strcmp字符串比较 是比较字符串的,比较的是字符串的内容,不是长度。字符串小于字符串时,返回 0 的数模拟实现区分,,是长度不受限制的字符串函数,,是长度受限制的字符串函数模拟实现strncat模拟实现strncmp字符串查找函数在一个字符串里查找另一个字符串是否存在,返回一个指针,如果在str1里找到str2,返回str2在str1里第一次出现...

2022-07-01 15:41:52 139

原创 指针的进阶

例题常量字符串存放在常量区,不能被修改,两个指针指向同样的常量字符串,这个常量字符串只会存一份指针数组的应用parr是数组名,数组名是数组首元素的地址,也就是int* 类型变量的地址数组指针:指向数组的指针。数组指针的类型就是去掉名字,剩下的就是类型接下来看个常见的用遍历数组错误如果想要遍历数组,下面这种写法可以数组指针在二维数组用的较多在二维数组里,arr是数组名,数组名是首元素的地址,也就是二维数组的第一行的地址,第一行是个数组,数组的地址应该放在一个里相当于找到第i行起始

2022-06-28 14:35:04 137

原创 数据的存储

基本的内置类型 //字符数据类型 //短整型 //整形 //长整型 //更长的整形 //单精度浮点数 - 4个字节 //双精度浮点数 - 8个字节所以和如何理解?拿举例自定义类型数组类型数组是有类型的,是我们自定义的类型构造类型指针类型空类型void 表示空类型(无类型)通常应用于函数的返回类型、函数的参数、指针类型正整数:原码,反码,补码相同;对于整形来说:数据存放在内存中其实存放的是,使用补码,可以将符号位和数值统一处理。小端字节序(以字节为单位讨论顺序)存储:把一个

2022-06-10 11:34:57 100

原创 模拟实现strcpy等

strcpy的模拟实现//dest指向目标空间//src指向源字符串void my_strcpy(char* dest, const char* src){ int i = 0; while (src[i] != '\0') { dest[i] = src[i]; i++; } dest[i] = '\0';}void my_strcpy1(char* dest, const char* src){ while (*src != '\0') { //虽然++的优先

2022-06-06 11:02:13 72

原创 一轮复习:c语言结构体

结构体的知识结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量想描述一个复杂对象,比如人/书,他的属性不止一个,所以就有了不同的成员变量结构体的声明这里只是声明,并没有创建变量结构体变量的定义typedef 重命名Stu在这里不是变量,而是结构体类型结构体的初始化一般情况: struct student s1 = {"张三",20,"12345"}; Stu s2 = {"小王",11,"212121"};当结构体里嵌套了其他结构体:struc

2022-05-25 10:36:50 85

原创 一轮复习:指针初阶

指针地址指向了一个确定的内存空间所以地址形象的被称为指针 int a = 10; int* pa = &a; //pa是用来存放地址的(指针),pa是指针变量 //*表示pa是指针变量,int表示pa指向的a的类型指针是个变量,存放内存单元(字节)的地址指针的大小在32位平台是4个字节,在64位平台是8个字节指针和指针类型第一个意义指针类型决定了指针解引用操作的时候,一次访问几个字节(访问内存的大小)char* 指针解引用访问一个字节int* 指针解引用访问4个字

2022-05-24 11:06:14 66

原创 map和set

map统计次数方式1:先查找如果第一次出现插入map,不是第一次出现就让value++for (auto& str : arr) { auto ret = countMap.find(str); //如果是第一次出现就插入搜索树map if (ret == countMap.end()) { countMap.insert(make_pair(str, 1)); } //如果不是第二次出现,val就++ else { ret->second++

2022-05-17 09:39:07 98

原创 c++多态

目录多态多态子类中满足函数名相同,参数相同,返回值相同的虚函数(跟虚继承无关,只是关键字相同),叫做重写

2022-04-26 09:08:59 71

原创 c++继承

目录继承继承方式父类和子类对象赋值转换继承继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承不仅继承父类的成员变量,还继承父类的成员函数继承是类设计层次的复用简单来说,继承就是让子类使用父类的成员class Person//父类{public: void print() { cout << "name:" << _name << endl; cout

2022-04-19 11:37:13 4234 1

原创 模板的进阶

目录

2022-04-13 10:10:21 335

原创 优先级队列

目录优先级队列优先级队列优先级队列底层是堆void test_proirity(){ //默认大的优先级高 --默认给的仿函数是less //priority_queue<int> q; //利用仿函数,控制小的优先级高--给一个greater的仿函数 priority_queue<int, vector<int>, greater<int>> q; q.push(3); q.push(1); q.push(9); q.push(13)

2022-04-07 11:56:50 85

原创 stack和queue

目录栈栈和队列的使用栈栈和队列不是容器而是容器适配器栈和队列的使用栈不支持迭代器,为了支持栈的先进后出,后进先出。void test_stack(){ stack<int> s; s.push(1); s.push(2); s.push(3); s.push(4); while (!s.empty()) { cout << s.top() << " "; s.pop();//头删 }}例题设计一个支持 push ,pop ,t

2022-04-06 09:42:21 125

原创 vector

目录reserve和resizereserve和resizereserve()是扩容 ,resize()是扩容加初始化或删除数据(不会改变容量)void test_vector3(){ vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); //v.reserve(100); v.resize(100);//默认都初始化为int类型的缺省值 v.resize(1

2022-03-26 11:14:26 1496

原创 模拟实现string

目录构造和析构深拷贝构造和析构首先得在我们自己的命名空间避免冲突,再完成构造和析构函数namespace cl{ class string { public://整体思路:在构造函数的时候,开空间把数据拷贝拷贝过来,存储在动态开辟的字符串,待会增删查改都方便//size_t strlen(const char* str); string(const char* str) :_str(new char[strlen(str) + 1])//strlen不会计算到'\0',所以会

2022-03-15 10:39:18 427

原创 了解string

目录编码string 类构造函数capacityoperator[]at例题编码编码 - 值 –符号映射关系 – 编码表ascii编码表 – 表示英文编码表unicode – 表示全世界文字编码表gbk --中文自己量身定做的编码表string 类构造函数 string s1;//无参的构造函数 string s2("hello world");//带参的构造 string s3(s2);//拷贝构造 string s4(s2, 2, 6);//从第二个位置开始,往后六

2022-03-04 12:09:46 286

原创 Linux环境基础

linux开发工具vimvimvim — 文本编辑器;从定位上和记事本没有差别vim 三种模式:1.命令模式 按i进入插入模式2.底行模式 按Esc回退到命令模式3.插入模式命令模式:光标相关:h (左) j(下) k(上) l(右) shift+^(行首) shift+$(行尾)gg(起始行) shift+g(结束行)n+shift+g(指定行)b/w :按照单词为单位进行前后跳转文本操作yy:复制当前行nyy:复制加上当前行的n行u:撤销操作p:粘贴 n

2022-03-02 11:19:42 361

原创 Date类

这里写目录标题Date.hDate.ctest.cppDate.h#pragma once#include<iostream>using namespace std;class Date{ friend ostream& operator<<(ostream& out, const Date& d); friend istream& operator>>(istream& in, Date& d);pu

2022-02-24 14:52:21 53

原创 c++模板

模板函数模板函数模板//函数模板template<class T>//模板参数列表 --参数类型void Swap(T& x1, T& x2)//函数参数列表 -- 参数对象{ T x = x1; x1 = x2; x2 = x;}int main(){ int a = 10, b = 3; Swap(a, b); return 0;}template<class T>T Add(const T& left, const

2022-02-22 20:12:09 128

原创 C++内存管理

目录内存分布例题内存分布例题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 =

2022-02-21 16:14:36 643

原创 c语言操作符

目录操作符分类算数操作符移位操作符操作符分类算数操作符+, - , * ,/ ,%"/"很特殊,对于 / (除号) 两边都是整数,执行的是整数除法操作数中有浮点数才执行浮点数除法%:取模取模操作符只能针对整型类型移位操作符<< :左移操作符如果a= -1(正整数原反补相同)......

2022-02-15 22:03:03 242

原创 数组的使用

数组数组的组成数组的初始化一维数组的使用数组的组成type_t + arr_name[const_n]✈️type_t 代表数组的元素类型✈️const_n是一个常量表达式,代表数组的大小n必须是常量,不能是变量数组的初始化数组指定大小和没有指定大小的区别 int arr1[10] = { 1,2,3 };//不完全初始化,剩余默认初试化为0 int arr2[] = { 1,2,3 };//根据初始化的内容确定数组的大小字符数组的注意点: char arr3[] = "

2022-02-12 22:40:37 437

原创 Linux

目录calfind-namegrepzip/unzip指令tar指令callinux 当中的日期find-name指令,程序,命令,工具,本质是可执行程序linux下find命令在目录结构中搜索文件,并执行指定操作find-name:根据指定的名称来进行查找这个文件根据指定的文件名,直接进行特定文件在特定路径下的查找根据指定的文件名,直接进行特定文件在特定路径下的查找grep行过滤工具,进行文本查找grep -v匹配不包含9的zip/unzip指令zip功能

2022-02-03 21:30:47 231

原创 c++:类和对象(下)

目录初始化列表'<<' 和 '>>'重载初始化列表初始化列表 -class Date{public: //初始化列表——成员变量定义的地方 Date(int year, int month, int day) :_year(year)//每个值最多出现一次 , _month(month) , _day(day) ,_N(10) ,_ref(i) ,_aa(-1) { //_N=10,这里会报错,说明到构造函数体内时,成员变量已经定义出来了

2022-01-21 21:29:02 246

原创 c++:类和对象(上)

文章目录面向对象类和对象1.structclass类对象的大小面向对象????c语言是面向过程的,关注的是过程????c++是基于面向对象的,关注的是对象????面向对象三大特性:封装,继承,多态封装:????1.数据和方法在类里面都放在了一起???? 2.访问限定符:public(公有) protected(保护) private(私有)????公有可以在类外面直接访问;保护和私有不可以直接访问????封装是一种更好的严格管理,不封装是一种自由管理类和对象1.struct在c语言

2022-01-17 22:58:44 226

原创 函数的使用

目录库函数自定义函数库函数???? IO函数 input/output printf/scanf getchar/putchar …???? 字符串操作函数 strlen strcmp…???? 字符操作函数???? 内存操作函数 memcpy memset memmove???? 时间/日期函数 time???? 数学函数 sqrt????我们想把整型数组的前五个数用memset设置为1,这是没法实现的 int arr[10] = { 0 }; memset(arr,

2022-01-10 21:52:39 214

原创 分支和循环

分支和循环分支语句分支语句if语句//如果if后面想跟多条语句,使用代码块if (age > 18) { printf("可以"); printf("不行"); }else和它最近的if匹配int main(){ int a = 0; int b = 2; if (a == 1) if (b == 2) printf("hehe\n"); else//else和if(b==2)匹配,而不是和if(a==1)匹配 printf("haha\n");

2021-12-16 19:55:22 48

原创 c语言初阶

c入门mian函数数据类型ASCII表常量,变量mian函数main函数—主函数是程序的入口有且只有一个主函数//void --告诉我们main函数不需要参数int main(void){ return 0; }数据类型char --字符数据类型–1个字节short–短整型–2个字节int — 整型–4个字节long – 长整型–4个字节long long – 更长的整型–8个字节float – 单精度浮点数–4个字节double – 双精度浮点数–8个字节计算机

2021-12-13 19:32:24 316

原创 c++:入门

c++入门

2021-12-06 15:55:09 235

原创 extern c操作

extern cc++程序如何调用c

2021-12-06 12:48:34 206

原创 手撕八大排序

排序算法1.直接插入排序2.希尔排序1.直接插入排序步骤一:单次排序,将x插入[0,end]的有序区间。 int end ; int x ; //单趟排序,理解为把x插入[0,end]的有序区间 while (end >= 0)//注意end的边界 { if (a[end] > x) { a[end + 1] = a[end]; end--;//end为0时--,end就等于-1,a[0]的就等于x } else

2021-11-22 11:07:32 1351

原创 二叉树oj题

二叉树oj题(1)相等二叉树(2) 对称二叉树(3)另一棵树的子树层序遍历oj题(1)相等二叉树思路:首先判断这两棵树是否为空。再考虑其中一个是否为空,接着再比较值是否相等,最后,如果值相等再递归比较子树1.判断两棵树是否相等。链接bool isSameTree(struct TreeNode* p, struct TreeNode* q){ if(p==NULL&&q==NULL) { return true; } if(p==NU

2021-11-15 19:37:24 247

原创 数据结构:单向链表

单向链表1. 单向链表的实现1. 单向链表的实现无头+单向+非循环链表增删查改实现首先定义接口#pragma once#include<stdio.h>#include<assert.h>#include<stdlib.h>typedef int STDataType;typedef struct SeqListNode{ STDataType data;//存放数据 struct SeqListNode* next;//next指向下一个结点

2021-11-08 21:30:48 226

原创 数据结构顺序表

顺序表1. 顺序表的实现1. 顺序表的实现//一般在生活中用到的是动态顺序表#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int SLDataType;//typedef的目的是方便以后修改存储什么类型的数据typedef struct SeqList{ SLDataType* a;//指向动态开辟的数组 int size;//有效数据的个数 i

2021-10-30 17:57:29 106 1

原创 初识数据结构

数据结构1.什么是数据结构?2.时间复杂度时间复杂度的计算1.什么是数据结构?数据结构是计算机存储,组织数据的方式。算法简单来说就是计算的步骤。那么我们如何衡量一个算法的优劣呢?通常从时间复杂度和空间复杂度两个方面衡量时间复杂度主要衡量一个算法运行的快慢空间复杂度主要衡量一个算法运行所需的额外的空间2.时间复杂度时间复杂度是算法中基本操作的执行次数算法的时间复杂度是一个函数时间复杂度的计算...

2021-10-14 10:12:54 64

原创 malloc,realloc,calloc的使用

malloc,realloc,calloc是c语言提供的动态内存开辟的函数1.malloc:函数向内存申请一块连续可用的空间,并且返回指向这块空间的指针,如果开辟失败(比如申请四十个G的空间,而电脑没有这么大的内存就失败),就返回一个NULL指针...

2021-09-24 09:53:43 2023 3

空空如也

空空如也

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

TA关注的人

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