自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c语言和系统的文件接口

本文介绍了C语言和系统级别的文件操作接口。C语言通过fopen()、fwrite()、fread()和fclose()函数实现文件操作,参数包括文件名、读写模式、缓冲区等。系统接口使用open()、write()、read()和close()函数,需要文件描述符作为操作对象。两种方式都提供了文件打开、读写和关闭功能,但系统接口更底层,能处理中断等特殊情况。代码示例展示了如何正确使用这些函数实现文件操作。

2025-05-24 16:19:56 822

原创 动态库和静态库

动静态库详解

2025-05-21 16:41:10 327

原创 Linux进程

fork函数是在已存在的进程中创建一个子进程,而原进程为父进程。注意:父进程和子进程虽然有相同的二进制代码但是它们是两个可以独立运行的进程,而且谁先被执行完全由调度器决定。

2025-05-03 11:14:07 968

原创 Linux的环境变量

其中name是你要查看的环境变量的名称。export:设置一个新的环境变量。例如查看PATHD的环境变量。env:显示所有的环境变量。unset:清楚环境变量。

2025-05-02 10:28:28 378

原创 Linux进程详解

进程是程序的一个执行实例,正在执行的一个程序,担当分配系统资源的实体。

2025-05-01 12:16:18 645

原创 Linux基础开发环境使用

本文会讲究如何在linux上进行编写、调试、运行、以及讲自己的代码提交到gitee上。

2025-04-20 10:07:55 841

原创 linux编辑器-vim

vim有很多模式但是有三个重要的模式分别是命令模式、插入模式、低行模式。

2025-04-13 10:48:43 446

原创 linux软件包管理器apt

apt可以帮我们高效的处理linux下的安装包问题,也是ubuntu系统下最常用的安装方式。注意:使用apt下载内容时要有root权限,如果是普通用户的话需要有sudo提权。

2025-04-10 09:51:18 191

原创 linux权限

linux有两种用户,超级用户(root)和普通用户,超级用户的命令提示符是#,普通用户的命令提示符是$。命令:su (用户名)功能:切换到目标用户。普通用户切换到root用户需要root的秘密,在后面可以不加有用户名。root用户切换到普通用户不需要密码,后面要接用户名。

2025-04-04 18:23:35 372

原创 Linux的一些常见指令

linux的一些相关常用指令

2025-03-26 15:50:53 778

原创 红黑树(RBTree)

红黑树的每个节点都有颜色(非黑即红),通过颜色来保证红黑树的平衡,是平衡搜索二叉树的一种。

2024-12-13 21:48:52 512

原创 AVL树的实现

AVL树,全称为Adelson-Velsky和Landis树,是一种自平衡的二叉搜索树。它由苏联数学家G.M. Adelson-Velsky和E.M. Landis于1962年提出,并以他们的姓氏命名。

2024-12-08 15:28:56 657

原创 cpp的map

还有删除(erase),清除 (clear)、查找(find)、计数(count)用法和set的用法几乎一模一样。构造一个容器,其中包含与范围 [first,last] 一样多的元素,每个元素都由该区域中的相应元素构造。1、map是关联容器,他是按照特定顺序来进行存储由key和value组成的键值队。它会返回k所对应对value,容器原先没有k则插入k并返回映射值的引用。3、map支持下标访问,将key放入[]中可以找到对应的value。通过插入新元素来扩展容器,从而有效地增加容器大小(按插入的元素数)。

2024-12-03 09:36:12 660

原创 cpp的set

如果容器的比较对象反射性地返回 false(即,无论元素作为参数传递的顺序如何),则认为集合的两个元素是等效的。由于集中的元素是唯一的,因此插入操作会检查每个插入的元素是否等效于容器中已有的元素,如果是,则不会插入该元素,而是返回此现有元素的迭代器(如果函数返回值)。如果容器的比较对象反射性地返回 false(即,无论元素作为参数传递的顺序如何),则认为集合的两个元素是等效的。下面一依次介绍每一个容器。3、set中value和key是相同的,且每个value的值是唯一的,不存在两个相同的value值。

2024-12-02 21:40:11 1297

原创 c++继承

继承有父类(基类)和子类(派生类),子类继承了父类(子承父业)。2.2继承基类成员访问方式的变化。菱形继承,单继承,多继承,组合

2024-11-17 11:12:36 493

原创 c++的list类

本篇将讲述类中的各种重要和常用函数(begin()、end()、rbegin()、rend()、empty()、size()、front()、back()、push_front()、pop_front()、push_back()、pop_back()、insert()、erase()、resize()、clear()、splice()、remove()、unique()、sort()、reverse())

2024-11-02 22:35:46 2177

原创 cpp的vector类

本篇将讲述类中的各种重要和常用函数(begin()、end()、rbegin()、rend()cbegin()、cend() 、crbegin()、crend()、size()、resize()、capacity()、reserve()、empty()、push_back ()、pop_back()、insert()、erase()、clear()。

2024-10-26 22:03:02 1360

原创 cpp的string类

本篇将讲述string类中的各种重要和常用函数(string()、begin()、rbegin()、cbegin()、crbegin()、end()、rend()、cend()、crend()、范围for、size()、resize()、capacity()、reserve()、clear()、empty()、append()、push_back()、insert()、erase()、replace()、swap()、find()、rfind()、substr()、compare())。

2024-10-25 14:04:13 817

原创 c++内存管理

如果申请的是内置类型的空间,new和malloc,delete和free基本类似,不同的地方是:new/delete申请和释放的是单个元素的空间,new[]和delete[]申请的是连续空间,而且new在申请空间失败时会抛异常,malloc会返回NULL。,如果malloc申请空间成功就直接返回,否则执行用户提供的空间不足应对措施,如果用户提供该措施就继续申请,否则就抛异常。1. 在释放的对象空间上执行N次析构函数,完成N个对象中资源的清理。2. 在申请的空间上执行构造函数,完成对象的构造。

2024-10-15 16:59:56 866

原创 类和对象(下)

友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。友元分为两种友元函数和友元类。关键字为friend。3.2友元函数当我们要将operator

2024-10-14 22:39:09 658

原创 日期类的实现

【代码】日期类的实现。

2024-09-23 18:30:10 171

原创 类与对象(中)

默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。4. 拷贝构造函数典型调用场景:使用已存在对象创建新对象函数参数类型为类类型对象函数返回值类型为类类型对象注意:1.在编译器生成的默认拷贝构造函数中,内置类型是按照字节方式直接拷贝的,而自定义类型是调用其拷贝构造函数完成拷贝的。2.类中如果没有涉及资源申请时,拷贝构造函数是否写都可以;一旦涉及到资源申请时,则拷贝构造函数是一定要写的,否则就是浅拷贝。

2024-09-23 12:56:27 821

原创 类与对象(上)

关键字:classclass为类的关键字,className是类的名字,{}是类的主体注意:分号不能省略。类的两种定义方式: 2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名:: 注意: 一般情况下,更期望采用第二种方式。成员变量命名规则的建议:上面这种定义可读性不高,我们不知道year是类成员还是函数传递的参数。一般来说我们推荐在类成员前加一个'_',或者加'm',如上所示。四、类的实例化 用类类型创建对象的过程,称为类的实

2024-09-18 21:42:20 986

原创 C++入门

命名空间中的所有内容都局限于该命名空间中。

2024-09-15 20:23:01 2041

原创 七种常见的排序算法和实现

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。 我们依次对下面排序进行讲

2024-08-22 09:48:54 1968

原创 二叉树和堆

现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统 虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;我们左节点记录孩子的节点,右节点记录兄弟的节点,若没有孩子或兄弟则指向空。兄弟节点:具有相同父节点的节点互称为兄弟节点;节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;

2024-08-21 20:03:31 870

原创 顺序表和链表

顺序表和链表都是线性表,线性表是一种在实际中广泛使用的数据结 构,常见的线性表:顺序表、链表、栈、队列、字符串...

2024-08-07 09:51:09 338

原创 文件管理和有关文件管理的函数

二进制文件和文本文件的区别文件的打开和关闭流和标准流文件指针。文件的顺序如一些,还有文件的随机读写

2024-07-11 17:33:05 840

原创 动态内存管理

动态内存的分配以及与动态内存有关的几个库函数(malloc,calloc,realloc,free),常见的动态内存的错误以及柔性数组的特点和优势

2024-07-07 16:36:24 752

原创 自定义类型:联合和枚举

联合体类型的声明,联合体的特点以及相同成员的结构体和联合体的对比,联合体大小的计算实用案例,还有联合体的练习,枚举类型的声明,枚举类型的优点以及枚举类型的使用

2024-07-07 15:48:16 915

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

结构体类型的声明结构体内层的对其如何?计算结构体的大小结构体的船舱和位段的使用和位段。内存分配以及注意事项

2024-07-05 15:56:36 792

原创 C语⾔内存函数:memcpy、memmove、memset、memcmp的使用和实现。

注意:以下使用的函数,都要包含头文件<string.h>注意:以下使用的函数,都要包含头文件<string.h>一、memcpy使⽤和模拟实现voidmemcpyvoidconst void* source,size_tnum )1、使用:•函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。•这个函数在遇到'\0'的时候并不会停下来。•如果source和destination有任何的重叠,复制的结果都是未定义的。

2024-06-05 09:35:50 702 4

原创 strlen、strcpy、strcat、strcmp、strncpy、strncat、strncmp、strstr几个库函数的使用和实现。

注意:以下使用的函数均需要包含库文件<string.h>注意:以下使用的函数均需要包含库文件<string.h>

2024-06-03 21:02:25 1077 2

原创 深入指针3

什么是函数指针呢?通过前面的学习我们不难发现函数指针实际上是一种指针,里面存放的是函数的地址,通过解引用我们可以使用函数,那我们怎么知道函数是不是有地址呢?我们做一个实验。

2024-05-23 13:55:40 589 8

原创 深入指针2

这⾥我们发现&arr[0]和&arr[0]+1相差4个字节,arr和arr+1 相差4个字节,是因为&arr[0] 和 arr 都是 ⾸元素的地址,+1就是跳过⼀个元素。但是&arr 和 &arr+1相差40个字节,这就是因为&arr是数组的地址,+1 操作是跳过整个数组的。如图,我们将一个指针数组,指向三个不同的数组,作为行,然后,将每一个数组作一行。如上所述,访问数组可以用指针的形式进行,当有一个数组arr,且指针指向arr时就有。我们举个例子:整形数组,字符数组,浮点形数组,他们都是数组,因此,

2024-05-21 18:25:03 409 3

原创 深入指针1

我们知道指针变量是储存地址的,长度固定为4/8个字节,那为什么定义指针时还要有不同的类型呢?其实这是为了查找完整的数据,其实指针变量储存的只是第一个字节的地址,那这个数据到底多大?都是不知道的,因此我们需要给指针变量各种不同的类型,举一个生活的例子:你在学生宿舍,你的朋友要找到你,只要他知道你的寝室号就可以很快的找到你,类比与计算机,每一个学生就是一个数据,这些数据存放在内存中(内存类比宿舍),而你可以通过地址来找到这个数据(地址类比寝室号)。概念:野指针就是指向的位置不可知,随机的,不确定的。

2024-05-21 11:08:54 776 3

原创 操作符详解

1.操作符的分类1.操作符的分类•算术操作符:•移位操作符:>•位操作符:& | ^ ~•赋值操作符:+=-=*=/=%==&=|=^=•单⽬操作符:!++--sizeof类型•关系操作符:>=一、算术操作符“+” “-”:和我们小学学的数学一样就是加和减的意思。“*” “/”

2024-04-29 19:58:16 699

原创 利用数组和函数怎么写一个热门扫雷游戏?

首先,我们就要有菜单,可以进入游戏,其次当我们开始玩游戏的时候要打印出棋盘,再者当我们点击一个格子要显示周围有几个雷,最后我们怎么判断游戏是否结束?如图,当我们开始游戏的时候,就显示左边的数据,在计算周围雷的个数就用右边的数组计算,那么当我们点击边缘上一点,该如何计算雷的个数呢?这个问题很简单,只要输入相应的坐标就可以了,例如上图,我们要输入‘1’的绿色格子,只要输入3 6就可以了。要知道因为我们的棋盘是扩大了一圈的,当我们填入雷的时候,为了避免填到外围我们还需要对填入的雷进行判断。1、屏幕上要显示菜单。

2024-04-24 22:51:14 580 3

原创 关于如何判断一个数是否为质数

试除法,6k+-1,艾拉托斯特尼筛法(Sieve of Eratosthenes)

2024-04-21 20:02:57 1502

原创 C语言的语言分支和循环语句

同理(3<4||5<3)在该式子中由于前面的(3<4)为真,而前面说了”||“中只要有一个为真即为真,所以此时计算机知道该式子必为真就不再进行后面的判断。(3>4&&5>3)在该式子中由于前面的(3>4)为假,而前面说了”&&“中只要有一个为假即为假,则此时,计算机知道该式子为假就不再进行后面的判断。一个表达式在进行前面的运算时,就已经得出该表达式是否为真,则该表达式将不再进行后面的计算。表达式1)若表达式1为真,则该式子为假,若表达式为假,则该式子为真。当表达式1成立则表达式2计算否者表达式3计算。

2024-04-11 22:16:36 850

空空如也

空空如也

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

TA关注的人

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