自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面向对象的设计模式

针对反复出现的问题所总结归纳出的通用解决方设计模式是指在软件开发过程中案。这些方案是众多软件开发人员经过大量实践总结出来的,具有高效性、可维护性和可扩展性等优点。使用设计模式可以帮助开发者更高效地构建软件系统,提高代码的复用性、可维护性和可扩展性,同时也能降低系统的耦合度。

2025-07-14 17:19:05 567

原创 智能指针(c++)

shared_ptr基于”引⽤计数”模型实现,多个shared_ptr可指向同⼀个动态对象,并 维护⼀个共享的引⽤计数器,记录了引⽤同⼀对象的shared_ptr实例的数量。当两个或多个对象通过 std::shared_ptr 相互引⽤,形成循环引⽤时,会导致这些对象的引 ⽤计数永远不会变为 0,从⽽造成内存泄漏。std::weak_ptr 是 C++ 标准库 头⽂件中提供的⼀种智能指针, 它是⼀种弱引⽤,⽤于配合 std::shared_ptr 使⽤,从某种特定情况中看起来,子类就是父类,父类能做的事,

2025-07-14 15:31:48 1159

原创 迭代器(c++)、智能指针

本质上就是一个类、智能指针其实是⼀个类,实质就是重载了->和*操作符的类,由类来实现对内存的 管理,确保即使有异常产⽣,也可以通过智能指针类的析构函数完成内存的释放。智能指针的⾏为类似常规指针,重要的区别在于智能指针负责⾃动释放所指向的对 象。STL提供给我们提供了四种智能指针类型,除了下边列出的三种,还有C++98标准auto_ptr智能指针,C+11已将将其摒弃。C++11 标准新引⼊了 这 3 个智能指针:shared_ptr : 允许多个智能指针指向同⼀个对象。

2025-07-11 17:35:49 948

原创 c++容器

int main()//1.构建链表对象//初始化列表来初始化列表对象//2.添加元素//头插//尾插//3.遍历iter!=lst.end();iter++)}*///4.元素的删除//指定位置删除//尾部删除//头删//按值删除//检测链表对象中是否为空,如果为空返回true;//5.对元素排序lst.sort();//6.链表的合并return 0;

2025-07-10 17:24:09 478

原创 c++11新标准、STL

STL(StandardTemplate Library)即标准模板库,是一个具有工业强度的高效的C++程序库。主要集成了常用的数据结构(类模板实现)和算法(函数实现)STL的一个重要特点是数据结构和算法的分离它不是面向对象的,STL主要依赖于模板而不是封装,继承和虚函数(多态性)C ++STU一共提供了六大组件,包括容器,算法,迭代器,仿函数,配接器和配置器,彼此可以组合套用。

2025-07-09 17:43:16 1152

原创 c++文件操作

一般是指内存以外的存储介质上的一批数据的集合。文件可以是一份报告,一张图片或者一个执行程序等数据格式ifstream 文件只做读操作ofstream 文件只做写操作fstream 文件可读可写。

2025-07-08 17:35:02 890

原创 c++编程题示例

【代码】【无标题】

2025-07-07 19:37:22 125

原创 泛型编程(c++)

namespace 命名空间名变量\函数\类。

2025-07-07 19:26:28 662

原创 面向对象的多态(虚函数)

重写:在派生类中对父类中的成员函数进行重新实现, 重写和重载的区别?在实现多态时,用父类在接收消息,要用父类的指针类型或父类的引用类型,不可以使用值传递注意:如果在基类的外部定义虚函数时,不能使⽤virtual关键字。内联函数是编译时展开函数体,所以在此时就需要有实体,⽽虚函数是运⾏时才有实体,所以内联函数不可以为虚函数。虚函数必须是⾮静态的成员函数虚函数必须在类里声明,在类外实现。

2025-07-03 15:27:14 428

原创 面向对象的特性(多态)

多态性(polymorphism)是面向对象程序设计的一个重要特征,利用它可以设计和实现易于扩展的系统。C++程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,从而通过一个函数名调用不同内容的函数。面向对象方法中,多态性的一般表述为:向不同的对象发送同一个消息,不同对象在接收时会产生不同的行为(即方法);每个对象可以用自己的方式响应共同的消息。系统实现角度看,多态性分为两类:静态多态性和动态多态性静态多态性是通过函数的重载实现的(运算符重载实质上也是函数重载)。

2025-07-02 17:24:27 715

原创 继承(c++)

面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为,新建的类称为。继承是继承不了类的私有数据的。:公有继续,私有继承,受保护继承如果省略继承方式就是默认为。和访问修饰符一样,不写就是默认私有。最好不要继承太多父类,占用内存,而且任意函数重复。

2025-07-02 11:39:17 886

原创 面向对象相关定义

class 类名数据成员列表函数成员列表a、类名要做到见名知意,复合标识符的命名规则b、类体主要包括三部分内容:访问修饰符+数据成员+数据成员+函数成员一个类可以只有数据成员,也可以只有函数成员,也可以两者都有c、访问修饰符:public 定义公有成员,就是向外界暴露的接口,任何一个类一般都需要定义公有接口,可以在类内和类外被访问protected 定义受保护成员,只能在类内火该类的派生类内来使用private 定义私有成员,只能在当前类的内部使用。

2025-07-01 11:50:40 708

原创 封装与继承(c++)

在c++中,静态成员是属于整个类的 而不是某个对象,静态成员变量值存储一份供所有成员共用。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还能节省内存static 数据类型名 数据成员名静态成员可以初始化,但只能在类体外进行初始化,初始化格式如:数据类型类名::静态数据成员名=初始值;2、静态成员函数定义格式:static 类型名称 函数名 (【形参列表】)、二、友元函数与友元类1、友元函数定义在类外的普通函数,他不属于任何类。但需要在类里加以声明,

2025-06-30 16:15:36 480

原创 数据库(MYsql)

数据库:存储数据的仓库 ,数据是有组织的进行存储数据库管理系统:操纵和管理数据库的大型软件(BBMS)SQL:定义了一套操作关系型数据库统一标准,操作关系型数据库的编程语言数据库的核心:DBMS数据库相关概念主流的关系型数据库管理系统。

2025-06-28 21:37:28 462

原创 默认构造函数

c++中有一种特殊的成员函数,他的名字和类名相同,没有返回值,而在创建对象时会自动执行,类中的数据成员的初始化往往通过构造函数来实现。完成类中数据成员的初始化,同时也是类中的成员函数,但是比较特殊。

2025-06-27 19:41:55 884

原创 c++面向对象编程

类是具有相同特征的(数据元素)和行为(功能)的对象的抽象,不能直接使用特征被称为属性(是对事物的某种特性的抽象秒速,比如年龄、性别)行为被称为方法(表示对象的行为(类中定义的函数,用来给类添加功能))class stupublic:int age;}*/virtual void print1() //类类型中的成员好结构图一样,也讲究内存对齐virtual void print2()//一个类中不管存在多少个虚函数,只会多占用一个指针大小的内存空间int main()

2025-06-26 23:38:36 751

原创 传递类型(c++)

特点:在调用函数时,将实参的值拷贝一份给形参,实参与形参空间是独立的,因此在函数内对任何形参的修改,不会影响到任何形参的修改,不会影响到实参,所以他的传递是单向的。

2025-06-26 17:53:27 344

原创 c++函数与预处理

代码复用;分解过程;函数定义类型:返回类型:向外界表明返回值的类型函数名:区分不同的函数个体形参列表:获取外界给该函数提供的数据、函数体:具体实现函数的功能逻辑。

2025-06-24 17:01:03 795

原创 【无标题】

1、创建原文文件2、编译原码文件3、生成可执行程序文件g++常用命令1、布尔类型2、类类型3、引用类型一般占用一个字节1、引用运算符,也叫地址运算符(&)2、求字节数的运算符(sizeof)3、强制类型转换运算符目标类型(表达式);不同于C语言4、成员运算符(.)5、:: 作用域限定符表示要使用std命名的空间中的变量cout<<:流插入运算符流提取运算符例子:c++以库的形式提供了一个字符串类型常见的字符编码标准:ASCII unicode UTF- 8 gbk的区别和特点 删除指定位置开始的指定

2025-06-23 17:45:20 211

原创 蓝牙模块调试

1、先初始化蓝牙模块,代码参考串口12、蓝牙模块暂时先不要连接手机,保持其处于指令模式3、有电脑端串口调试发送“AT”回车测试指令4、在串口1的中断响应函数中接收了“AT\r\n”(写代码)5、然后在串口1的中断函数中,通过串口3的发送函数,将“AT\r\n”发送给蓝牙模块(写代码)6、蓝牙模块如果能够正常响应(或代码没有发生任何错误),蓝牙模块会通过开发板向电脑端串口调试发送“OK”7、在电脑端串口调试上查看是否有“OK”

2025-05-07 17:47:48 696

原创 PWM(脉冲宽度调制)、串行通信

通过控制脉冲信号的占空比(高电平持续时间占周期的比例)来实现调节功能。周期固定:在这个过程中信号的总周期是不变。占空比可调:高电平持续时间占周期的比例可变。通常PWM需要依赖于定时器进行周期性操作,PWM一般也会涉及到GPIO相关的初始化,在当前STM32这块开发板的12个定时器中,其中基本定时器(TIM6、TIM7没有PWM功能)PWM模式1:计数器向上计数时,若计数值 < 比较值,输出低电平,否则高电平。PWM模式2:计数器向上计数时,若计数值 > 比较值,输出高电平,否则低电平。

2025-04-30 11:17:15 649

原创 延时函数(stm32f4xx)

晶振:当电流冲击石英晶体,石英产生震动,通过震动产生频率,频率越高性能越高。

2025-04-23 17:25:27 486

原创 按键点灯(stm32f4xx)

上拉电阻的作用:抗干扰,稳定电平:初始化电流为高电平电阻值大限流,防止电流过大下拉电阻用的很少,上拉电阻连接电源按键点灯代码:stm32阶段的项目;1.梳理详细的业务逻辑2.分析项目中所涉及到的传感器和相关3.将每一个传感器单独调试成功4.最后在main函数中进行功能逻辑的组装和综合调试。

2025-04-23 11:27:03 630

原创 STM32F407ZET6介绍

512k内置内存,用于程序下载嵌入式开发需要的文档和资料:原理图、数据手册、标准固件库嵌入式开发发展:寄存器、固件库、HAL库通常接线时,VCC引脚最后链接。以免设备带电,导致设备烧毁简单推挽电路上面电路npn通的话,称为推pnp导通称为挽。

2025-04-22 17:14:27 993

原创 预处理、库文件

预处理就是在源文件(.c文件)编译之前,所进行的一部分预备操作,这部分是由预处理程序自动完成,当源文件在编译时,编译器会自动调用预处理程序来完成预处理执行的程序,预处理执行解析完成才能进入下一步的编译过程gcc 源文件 -E -o 程序名[.后缀]#define 宏名称 常量数据预处理机制:此时的预处理只做数据替换,不做类型检查注意:宏定义不会占用内存空间,因为子啊编译前已经将宏名替换成常量数据宏展开:在预编译将宏名替换成字符串的过程被称之为“宏展开”{将宏名替换成常量数据的过程}

2025-03-28 16:31:42 1159

原创 枚举(结构体的一种类型)

枚举的存在就是将多个拥有关联关系的常量组合到一起,提高代码的可读性说明:枚举类型定义了一组常量,我们在开发中直接使用这些常量当然枚举类型也可以类似于接固体一样定义变量等操作枚举常量有默认值,从0开始一次+1,我们可以在定义时指定他的默认值,如果个别没有赋值,可以根据赋值一次+1特点:定义了一组常量,类似于定义了多个符号常量(宏定义)提高了代码的可读性语法:定义枚举类型名以后就可以定义该枚举类型的变量(先类型再变量)(枚举的成员是常量)在定义枚举类型的同时定义该枚举类型的变量(类型+变量)

2025-03-27 14:10:09 503

原创 动态内存分配

要实现动态内存分配,我们需要使用标准c库提供的库函数,动态内存分配,,其实就是在堆区申请内存(此时的内存由管理员自身来维护)功能:调整已分配内存块的大小,可能已经迁移数据到新地址,扩容后,空余位置是随机值,需要手动清零。参数:size:要分配的内存大小(字节) size_t是unsigned long 的别名。函数原型:void* cslloc(size_t nitems,size_t size);功能:分配指定字节数的内存到堆区,返回指向内存块首地址的指针,内存内容未初始化(随机值)

2025-03-24 21:49:06 373

原创 数据结构(顺序表与单链表)

由于结构体内容拥有多个不同类型的变量,因此初始化采用与数组类似的列表方式结构体的初始化有两种方式:①普通初始化 ②指定成员初始化为了能适应结构体类型的升级迭代,一般建议采用指定成员初始化//1,普通初始化//2.指定成员初始化.a = 100,//此处小圆点被称为成员引用符号.b = 'x',.c = 3.14。

2025-03-23 17:11:29 777

原创 指针(指针变量、指针数组、指针函数)

语法:数据类型 *变量列表:例如:int *a;(只能存储其他变量的地址)注意:指针变量的值只能是8/12位的十六进制数注意:1.实际变量名依然是a,而不是*a2.使用指针变量间接访问内存空间时,指针变量必须明确指向3.借助指针变量间接访问指针变量保存的内存地址上的数据,可以使用指针变量前加*来间接返回访问指针变量前加*,如果不带数据类型,就称为对指针变量的解引用4.指针变量只能指向同类型的变量,借助指针变量访问内存,一次访问的内存大小是取决于指针变量的类型。

2025-03-21 21:50:20 1172

原创 C语言:数组部分

元素下标:数组开头位置的偏移量,a[0]引用第一个格子,a[1]引用第二个格子,一次类推。int代表每个元素的类型,可以使任意基本类型,也可以是组合类型,甚至可以是数组。[5]代表这片连续内存分为5个相等的格子,每个格子称为数组的元素。存储模式:一片连续的内存,按数据类型分隔成若干箱通风大小的格子。概念:若数组元素类型相同也是数组,则该数组称为多维数组。一次性定义多个类型的变量,并存储到一片连续的内存中。概念:专门存放字符的数组,称为字符数组。a是数组名,即这片连续内存的名称。

2025-03-15 15:37:35 295

原创 函数入门基础

对于函数的设计者,最需要的工作是封装,封装意味着对外提供服务并隐藏细节,对于一个封装良好的函数而言,其对外提供服务的接口应当是简洁的,内部功能应当是明确的。在C语言中,函数意味着功能模块,一个典型的C语言程序,就是由一个个的功能模块 拼接起来的整体,也正因为如此,C语言被称为模块化语言。对于函数的使用者,可以简单的将函数理解成一个黑箱,使用者只管按照规定给黑箱一些输入,就会得到一些输出,而不必理会黑箱内部的运行细节。3,递归函数包含两个过程,一个逐渐递进的过程,和一个逐渐回归的过程。

2025-03-09 18:15:14 1333

原创 内存管理之栈内存

堆是唯一一个可被开发者自定义的前一段,开发者可以根据需要申请内存的大小,决定使用的时间长短等,但又由于这是一块系统“飞地”,所有的细节均由开发者自己把握,系统不对此做出任何干预,给与开发者据对的“自由”,但也正因为如此,对开发者的内存管理提出了很大的要求,对堆内存的合理使用,几乎是软件开发中的永恒话题。任何一个 程序,正常运行都需要内存资源,用来存放如变量、常量、函数代码等等,这些不同的内容,所存储的内存区域是不一样的,且不同的区域有不同的特性,因此我们需要研究内存布局逐个了解不同内存区域的特性。

2025-03-08 15:09:48 1094

原创 C语言指针介绍

指针

2025-03-04 22:23:01 455

空空如也

空空如也

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

TA关注的人

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