自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 实现一个String类,实现它的四个成员函数。

四个默认成员函数分别为(构造、析构、拷贝、赋值)#include <iostream>#include <string.h>using namespace std;class String{ char* m_data;public: //构造函数 String(void) { m_data = new char[1]; m_data = '\0'; } //有参构造 String(const char* str = NULL) { m_da

2021-08-09 10:48:37 377

原创 排序算法(冒泡、选择、插入、快速)

冒泡排序:冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。void bubble_sort(int* arr,size_t len){ bool flag = true; for(int i = len-1; i > 0 && flag; i--) { flag = false; for(int j = 0; j < i;

2021-07-22 17:05:02 159

原创 使用C实现 strlen、strcpy、strcat、strcmp函数

//strlen(str);计算str长度;size_t ste_len(const char* str){ assert(NULL != str); const char* temp = str; while(*temp) temp--; return temp - str;}//strcpy(str,dest);将dest中的覆盖在str上;char* sre_cpy(char* str,const char* dest){ assert(NULL != str &&am

2021-07-22 15:24:34 167

原创 使用系统IO实现一个带覆盖提示 cp 命令

实现 cp 命令如 cp src.c dest.c将src.c 文件中的内容拷贝到dest.c 中#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <getch.h>int main(int argc,const char* argv[]){ i

2021-07-22 14:48:06 213

原创 new/delete 和 malloc/free 总结

new/delete 是C++中专门管理堆内存的语句,而malloc/free是C语言中的标准库中的函数。new与malloc作用相同,都是分配堆内存。delete与free 释放堆内存。new在分配内存是允许初始化int* p = new int(val);new/delete 与 malloc/free 不能混用int* p = new int;free(p);//虽然语法允许,但是最好不要这样使用使用new分配内存时会自动调用类型的构造函数,而delete会自动调用析构函数,但是m

2021-07-22 10:04:04 302

原创 指针与引用

指针与引用的区别:指针是一种数据类型,引用是一种命名机制,指针是定义指针变量,引用是取别名。指针占用4个字节来存储地址,引用不占用内存。指针可以不初始化,引用必须初始化,所以有空指针没有空引用。指针方便与堆内存配合使用,引用没有变量传参。可以定义指针数组,不能定义引用数组,但是可以定义数组引用。可以定义二级指针,没有多级引用。有野指针,悬空引用。相同点:引用比指针的效率更高、安全、但无法方便配合堆内存使用,所以提高函数的传递效率,跨函数共享变量使用引用,访问堆内存用指针。...

2021-07-20 17:28:40 129

原创 关于智能指针总结

智能指针:C++中的智能指针就是重载*、->运算符的类对象。由于他本质是类对象,离开智能指针所在的作用时,会自动调用对象的析构函数,而在析构函数中会自动释放它所指向的堆内存,达到自动释放堆内存的效果。智能指针的缺点:1、不能使用多个智能指针指向一块堆内存,否则会导致重复释放。2、出了作用域智能指针就不能使用,他的释放时间不可控。3、不能使用指针指向数组型对象(析构时要调用delete[])。4、不能作为函数参数,也不能放入容器中。智能指针使用方法:#include <memor

2021-07-20 16:01:09 221

原创 进程映像、虚拟内存、内存管理

进程映像:程序就是存储在磁盘上的可执行文件 ,当程序运行时,系统会将可执行文件加载到内存中,从而在内存中形成进程(一个程序可以同时加载多个进程)进程在内存空间中的分布情况就是进程映像,从低地址到高地址一次分布为:txet 代码段(只读段) 二进制指令、常量(字符串字面值、const修饰过的原data段的数据),修改会产生段错误data 数据段 初始化过的全局变量呵静态局部变量bss 静态数据段 未初始化过的全局变量和静态局部变量该段内存开始前会被清理为0heap 堆 体量较大的数据,例如

2021-07-18 11:47:29 661

原创 Linux 静态库共享库总结

库:库文件其实是目标文件的集合,可以被其他代码所调用的,目的是把代码封装成库文件后方便使用,方便管理、安全性高、保密性强。静态库:调用静态库其实就是把静态库中的二进制指令拷贝到可执行文件中。优点:相对而言静态库运行速度更快,不需要依赖静态库文件。缺点:可执行文件较大,当静态库文件修改后,可执行文件需要重新编译。共享库:就是带入口的可执行文件,调用共享库时其实就是跳转到共享库二进制指针的位置即可,所以可执行文件执行时,共享库会被一起加载到内存中。优点:可执行文件较小,当共享库文件修改后,可执行文件

2021-07-16 12:23:05 159

原创 二叉树的层序遍历

二叉树的层序遍历:从上到下、从左到右依次遍历整棵树。如图的层序遍历为:[4,2,6,1,3,5]以下是运用C++的层序遍历的代码展示在这里插入代码片 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; };class Solution {public: vector<vector<int> > levelOrder(TreeNod

2021-07-13 10:55:58 113

原创 C++单链表逆序

牛客网真题:单链表的逆序C++的单链表逆序:创建3个指针,分别指向当前头节点位置,空空。先将一个指针指向头节点的下一个节点,下一个节点为当前节点的下一个节点,当前节点的下一个节点为前一个节点,前一个结点为当前节点,当前节点为下一个节点。 struct ListNode* ReverseList(struct ListNode* pHead ) { // write code here struct ListNode *pre = NULL; struct Li

2021-07-12 18:07:07 1129

原创 C语言的类型限定符的功能

主要的类限定符:static const volatile register auto extern typedef signed unsignedsigned unsigned 为有无符号类型限定signed 为有符号unsigned 为无符号static:改变存储位置:改变局部变量由stack到data或bss段被它修饰过的局部变量也被称为静态局部变量延长生命周期:延长局部变量的生命周期限制作用范围:限制全局变量只能本文件中使用防止全局变量:函数名冲突,也可以防止别人调用const

2021-07-11 11:36:17 275

原创 C++与C的区别:

C++介绍本贾尼.斯特劳斯特卢普,与1979年4月份在贝尔实验室在分析UNIX系统分布内核的数据流量时,特别希望有一种更加模块化的工具,于是在1979年10月份开始着手开发这样的一门编程语言,在C语言的基础上增加了面向对象的机制,这就是C++,在1983年完成了C++的第一个版本。C++与C的重要区别:1、C++是完全兼容C的所有内容2、支持面向对象的编程思想3、支持运算符重载、函数重载的编译时的多态机制4、泛型编程、模板5、支持异常处理6、类型检查更严格注意:学习C++重点学习面向对象的

2021-06-23 19:48:43 98

原创 数据结构概念

1、数据结构的起源 1968年,美国高德纳教授,《计算机程序设计的艺术》的第一卷《基本算法》的出版,开创了数据结构和算法的先河 数据结构是一门研究数据之间的关系和操作的学科,而非计算方法 数据结构+算法=程序 沃斯,凭借这个观点,获得了图灵奖,这句话展示了程序的本质 2、数据结构的基本概念 数据: 所有能输入到计算机中,能被程序处理的描述客观事物的符号 (变量、数组) 数据元素: 组成数据的,有一定意义的基本单位,也称为节点(结构体变量) 数据项:

2021-06-15 20:42:33 150

原创 进制转换源码、反码、补码

十进制转二进制:求余法:用2对求余,直到商为0,直到商为0结束,过程中产生的余数的逆序就是二进制二进制转八进制:三位二进制数据对应一个八进制二进制转十六进制:由于计算机的发展八进制不能满足需要,因此引入十六进制四位二进制数据对应一个十六进制在C代码中,以0开题是八进制数据,以0x开题是十六进制数据 %x 以十六进制显示数据 %o 以八进制显示数据 %#x %#o 显示数据前缀原码、反码、补码: 无符号的原码、反码、补码都是本身 正数的原码、反码、补码

2021-06-15 20:41:09 662

原创 二进制转换

十进制转二进制:求余法:用2对数据求余,然后在对商继续求余,直到商为0结束,过程中产生的余数就是该数据的二进制(逆序)n%2 =0/1商%2 =0/1直到商为0二进制转十进制:每位的2^(n-1)求和 注意:二进制转成八进制、十六进制是为了方便记录二进制数据 二进制转八进制: 三位二进制数据对应一个八进制 二进制:1 001 010 110 011 八进制:1 1 2 6 3二进制转十六进制: 由于计算机的发展八进制不能满足

2021-04-12 09:06:56 240

原创 五子棋小游戏

#include <stdio.h>#include <stdbool.h>#include <stdlib.h>// 定义棋盘char board[15][15];// 定义棋子char role = ‘@’;// 定义棋子坐标char key_x = 7,key_y = 7;// 初始化棋盘void init_board(void){for(int i=0; i<15; i++){for(int j=0; j<15; j++)

2021-04-12 09:04:30 118

原创 Linux

Linux系统介绍BCPL->newB->C->Unix->Minix->LinuxLinux管理硬盘的能力非常强,所以我们看到的只有一个分区/ 根目录,存储了所有的文件bin 存放系统命令 dev 设备文件(一切皆文件)media 多媒体目录 u盘、光驱、挂载的目录proc 记录程序运行过程中的资源使用情况sbin 存储超级用户才能使用的系统命令sys 存储系统相关的文件var 存储系统相关

2021-04-06 18:02:07 102

空空如也

空空如也

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

TA关注的人

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