自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 类和对象(六大成员函数)

无参的构造函数、全缺省的构造函数都称为默认构造函数;此外,用户未显式定义任何构造函数时,编译器自动生成的无参构造函数,也属于默认构造函数。核心规则:一个类中默认构造函数只能有一个,若同时存在多个可无参调用的构造函数,会导致调用歧义,编译失败。class Datepublic:// 无参构造函数:无参数传入 属于默认构造函数Date()_month = 1;_day = 1;int _month;int _day;Date d1;

2025-12-12 22:50:53 963 1

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

维度面向过程(C)面向对象(C++)核心单元函数对象(数据 + 方法)数据与方法关系分离,函数需显式传数据指针封装,方法属于对象内部关注点步骤流程(怎么做)实体交互(谁来做)适用场景小型项目、底层开发(如驱动) 中大型项目、复杂系统(如 APP)C++ 兼容 C 语言的struct,但允许在struct// C++的struct:可定义数据和函数// 方法1:初始化栈(无需显式传指针,this指针隐式传递)

2025-09-02 14:45:13 1412

原创 数据结构 二叉树

核心目标:通过手动构建简单二叉树的示例,快速进入二叉树操作学习阶段,后续再深入研究动态创建逻辑。关键代码解析: 结构体:用 存值, 指针维护二叉树的递归结构。递归定义体现:二叉树 = 根节点 + 左子树(二叉树) + 右子树(二叉树),为空则指针为 NULL。手动创建二叉树示例:构建的二叉树结构(简化示意):注意:这是硬编码式创建,仅用于快速学习操作;真实场景需动态构建(如从数组、字符串、文件解析 ),后续会详细讲解。二叉树的递归定义回顾:二叉树是以下两种情况之一:该定义是后续实

2025-09-02 13:28:55 936

原创 数据结构 二叉树 二叉树链式结构的实现

核心目标:通过手动构建简单二叉树的示例,快速进入二叉树操作学习阶段,后续再深入研究动态创建逻辑。关键代码解析: 结构体:用 存值, 指针维护二叉树的递归结构。递归定义体现:二叉树 = 根节点 + 左子树(二叉树) + 右子树(二叉树),为空则指针为 NULL。手动创建二叉树示例:构建的二叉树结构(简化示意):注意:这是硬编码式创建,仅用于快速学习操作;真实场景需动态构建(如从数组、字符串、文件解析 ),后续会详细讲解。二叉树的递归定义回顾:二叉树是以下两种情况之一:该定义是后续实

2025-08-20 17:01:17 754

原创 数据结构 二叉树(2)堆

核心逻辑堆是完全二叉树的顺序存储优化,需同时满足“完全二叉树结构”和“父子节点值的约束关系”。数学描述(以数组下标i对应完全二叉树节点为例 ):对于小根堆(最小堆):任意节点k[i]需满足k [i] ≤ k [2i+1](左孩子) 且 k [i] ≤ k [2i+2](右孩子)即父节点值 ≤ 左右子节点值,根节点是整个堆的最小值。对于大根堆(最大堆):任意节点k[i]需满足k [i] ≥ k [2i+1](左孩子) 且 k [i] ≥ k [2i+2](右孩子)即父节点值 ≥ 左右子节点值。

2025-08-12 18:21:10 1133

原创 数据结构 二叉树(1)二叉树简单了解

树的定义:根结点特性:子树规则:节点的度:叶节点(终端节点):非终端节点(分支节点):双亲节点(父节点):孩子节点(子节点):树的度:节点的层次:树的高度(深度):森林:树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,既然保存值域,也要保存结点和结点之间的关系,实际中树有很多种表示方式如:双亲表示法,孩子表示法、孩子双亲表示法以及孩子兄弟表示法等。我们这里就简单的了解其中最常用的孩子兄弟表示法。双亲表示法:核心思路:用数组存储树中节点,每个节点额外记录其“父节点在数组中的下标”,通过父节点索引维护

2025-08-06 22:19:21 1280

原创 数据结构 栈和队列

我的栈初始化是给了初始大小的如果你不想给初始大小也可以那么在后面入栈的实现时加一个判断后面会讲。因为我们使用数组实现比较优一点所以会详细讲解使用数组来实现栈而使用链表来实现栈只会给代码。如果你没有给初始大小那么在后面push的时候加一个判断。是否等于0如果等于0给一个初始值不然在。会导致capacity还是0。

2025-08-02 17:54:39 706

原创 c语言进阶 文件操作

文件是存储在外部存储设备上的数据流,按用途可分为程序文件和数据文件。文件名是唯一标识一个文件的字符串路径 + 文件名主干 + 后缀。各部分含义:路径:表示文件在存储设备中的位置(如D:\data\文件名主干:文件的核心名称(如test后缀:标识文件类型(如.txt表示文本文件,.dat表示数据文件)。示例::绝对路径,完整标识了文件位置。:相对路径(相对于当前程序运行目录)。路径中的转义字符:在C语言字符串中,需用\\表示(转义),如。

2025-07-23 20:21:46 1091

原创 c语言 进阶 动态内存管理

malloc函数函数原型的作用是向内存的堆区申请一块连续可用的空间。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。表示要分配的内存块的大小(以字节为单位)。

2025-07-21 22:47:13 1191

原创 c语言进阶 自定义类型 枚举,联合

枚举1. 枚举类型的定义​2. 枚举的优点2. 枚举的优点3. 枚举的使用枚举的实际应用场景​枚举的实际应用场景联合1. 联合类型的声明、定义与大小计算2. 联合的特点3. 联合大小的计算规则联合的实际应用场景联合的实际应用场景枚举与联合的区别枚举是一种用于定义命名常量集合的自定义类型,使用enum关键字声明。它将一组具有逻辑关联的离散值整合在一起,每个值都有一个有意义的名称。​示例:​// 定义表示星期的枚举类型enum Day​enum Day​{​。

2025-07-21 21:04:07 1257

原创 c语言进阶 自定义类型 (结构体 位段)

先描述结构体的 “样子”(成员组成),再根据类型创建具体变量。// 声明结构体类型(仅描述,不占用内存)// 成员1:姓名int age;// 成员2:年龄// 成员3:成绩// 根据类型定义变量(此时分配内存)// 定义学生s1// 定义学生s2是一个完整的类型名,s1和s2是该类型的变量,各自占用独立的内存空间。在声明结构体类型时,直接创建变量,适用于临时或仅需少量变量的场景。// 声明类型的同时定义变量s3、s4int age;} s3, s4;

2025-07-20 16:16:26 692

原创 c语言进阶 字符函数和字符串函数

目标数组长度需至少为源串长度 + 1(含\0)。若空间不足,会覆盖相邻内存。若源串无\0,strcpy会持续复制直至遇到内存中的\0,导致缓冲区溢出。:将内存块的前n个字节设置为指定的字符值(按字节填充)。首次调用需传入原串,后续传NULL继续分割。无符号类型,与负数比较可能导致逻辑错误。源串必须以\0结尾,否则会导致越界复制。目标指针不能指向常量字符串或只读内存。**功能:**按字节比较内存区域。查找子串在主串中的首次出现位置。复制源字符串到目标空间,包含。结尾的有效字符串,传入。,否则会越界访问内存。

2025-07-19 20:48:33 1055

原创 c语言进阶 指针

指针数组是一种特殊的数组,其核心特点在于每个数组元素都是一个指针变量,这些指针可以指向不同的数据类型。&arr的存储类型&arr(*p)表示 p 是指针(*p)[5]表示 p 指向包含 5 个元素的数组表示数组元素为 int// 正确:p是指向包含5个int的数组指针// 正确:p1指向首元素(类型int*)// 错误:类型不匹配(int* 与 int (*)[5])// 错误:必须指定数组大小int* p1[5];// 指针数组:包含5个int*的数组。

2025-07-15 16:46:09 1664

原创 c语言进阶 深度剖析数据在内存中的存储

char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数使用这个类型开辟内存空间的大小(大小决定了使用范围)。如何看待内存空间的视角。大端模式:数据的低位字节存于内存高地址,高位字节存于内存低地址小端模式:数据的低位字节存于内存低地址,高位字节存于内存高地址示例1.:32位整数0x12345678的存储内存地址(低→高)小端模式大端模式0x00000000。

2025-07-13 23:17:46 1269

原创 c语言初阶 结构体

结构体定义:描述结构体的组成,不分配内存空间结构体变量:根据结构体定义创建的具体实例,会分配内存空间示例// 结构体定义(不占空间)int page;// 结构体变量(占空间)// 分配内存,大小为50 + 4 + 4 = 58字节(不考虑内存对齐)内容关键点结构体声明描述结构体组成,用struct 结构体名 {成员列表};格式结构体定义与变量定义不占空间,变量占空间,变量是结构体的具体实例结构体初始化用{}初始化,嵌套结构体需嵌套{},可不完全初始化成员访问变量用。

2025-07-13 21:18:58 1116

原创 c语言初阶 指针

核心概念关键点风险点/注意事项指针本质32位系统中指针是32位地址,固定占4字节,存储内存单元编号避免解引用未初始化的指针指针类型决定解引用时访问的字节数和加减运算的步长不同类型指针不能混用野指针未初始化、越界或指向已释放内存的指针使用前检查指针有效性,避免返回局部变量地址指针运算加减整数、指针相减(元素个数)、关系运算避免指针越界和无效地址运算指针与数组数组名隐式转换为首元素指针,可通过指针访问数组元素数组作为参数会退化为指针,丢失大小信息二级指针。

2025-07-10 16:36:26 1200

原创 c语言初阶 操作符详解

操作符类型关键点注意事项/陷阱算数操作符整数除法截断小数,取模操作数必须为整数避免除以零,注意负数取模的结果移位操作符左移补0,右移分算数/逻辑,操作的是补码不要移动负数位(未定义行为)位操作符按二进制位运算(&|^),异或满足交换律和自反性注意与逻辑操作符的区别赋值操作符支持复合赋值(+=、-=等),连续赋值从右向左避免复杂的连续赋值,降低可读性单目操作符sizeof返回类型或变量大小,++/–分前置后置前置++返回自增后的值,后置返回原值关系操作符。

2025-07-09 16:10:53 1101

原创 c语言初阶 数组

访问数组时,下标超过0到数组长度-1的范围,称为数组越界。示例// 越界访问(合法下标是0~4)概念关键点示例一维数组创建大小可以是常量(C99前)或变量(C99后)int arr[5];int n=10;int arr[n];一维数组初始化不完全初始化时剩余元素补0(等价于二维数组创建必须指定列数,行数可省略二维数组初始化按行分组,列数不能省略(部分补0)数组越界编译器不检查,可能导致数据异常或崩溃int arr[3];(越界)数组作为参数。

2025-07-06 15:05:39 1228

原创 初阶c语言 函数

由程序员自己编写的函数,实现特定功能。基本组成返回类型 函数名(参数列表) {函数体;// 实现具体功能的代码return 返回值;// 可选(如果返回类型是void,则不需要return)例子:定义一个加法函数// 函数定义int add(int a, int b) { // 返回类型int,函数名add,参数a和breturn sum;// 返回计算结果// 在main函数中调用// 调用add函数printf("结果:%d\n", result);// 输出8return 0;

2025-07-04 19:54:27 989

原创 c语言初阶--分支语句和循环语句

C语言里,语句就是“能执行的一句话”,就像我们说话的一个完整句子。所有语句都必须以**分号;**结尾(除了复合语句)。int a = 5;是语句(定义变量)printf("你好");是语句(打印文字)也是语句(条件判断)语句类型作用例子表达式语句计算或赋值a = 5;a + b;函数调用语句调用函数add(3,5);控制语句控制代码执行顺序(条件、循环、跳转)if(a>0)for(;;break复合语句用{}把多个语句包成一个整体{ a++;b--;空语句什么都不做;

2025-07-02 22:29:07 1166

原创 初识c语言⭐⭐(小白必看)⭐⭐

学习c语言的初学知识

2025-07-01 21:05:01 1582

原创 数据结构(3) 链表

链表的详细介绍,包含链表的实现和接口的实现,小白必看

2025-05-03 22:01:00 1048

原创 C++基础学习(2) 引用

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。比如:某些人有外号,小名或者乳名等,虽然这些名字取的多种多样,但归根结底无论是外号还是正名都是指的同一个人。这里的引用也是类似的。引用在使用的时候必须初始化,不然会报错。

2025-04-25 17:30:34 947

原创 数据结构(2)顺序表

存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改.(可以看作是数组)

2025-04-23 20:30:02 655

原创 OPEN-CV(1) 图像的读入,显示及保存

cv::IMREAD_ANYDEPTH:如果设置,在输入具有相应深度时返回16位/32位图像,否则将其转换为8位。忽略图像的透明度通道。cv::IMREAD_UNCHANGED:包括图像的所有通道(包括alpha通道)。在学会读入和显示后,如果我们需要将图片(我们对图像的各种操作之后的图片)类型:cv::InputArray(通常是一个 cv::Mat 对象)类型:cv::InputArray(通常是一个 cv::Mat 对象)cv::IMREAD_ANYCOLOR:以任何可能的格式读取图像。

2025-04-22 16:03:29 994

原创 数据结构(1):时间复杂度

一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。一个算法所花费的时间与其中语句的执行次数成正比例,计算机发展的早期,计算机的存储容量很小。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要大概执行次数,那么这里我们使用。即:找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。得到的结果就是大O阶。2、在修改后的运行次数函数中,只保留最高阶项。

2025-04-21 16:32:52 767

原创 C++基础学习(1)

c++学习基础

2025-04-19 20:15:15 943 1

空空如也

空空如也

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

TA关注的人

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