- 博客(61)
- 收藏
- 关注
原创 c++类和对象-继承
作用:提高代码复用率,多个子类和父类有相同之处,又有自己各自的特点。例如基类人有四肢、会走路、说话,不同子类中国人是黑头发,说汉语,欧洲人黄头发,说英语。
2025-06-03 00:02:46
120
原创 c++ delete实现动作
不一定清除内存中的数值);2.不会将指向该内存的指针设置为nullptr空指针,对应指针会变成悬空指针,直接使用会出现未知行为。delete动作:1.清除指向的地址(操作系统。new申请的资源需要delete释放。总结:delete释放资源之后需要将。
2025-06-02 09:45:52
51
原创 stm32学习-CubeIDE开发
参考stm32开发常用开发环境(代码编写软件)MDK5:通用所有的ARM芯片,收费、界面功能原始CubeMx+MDK5:CubeMX图形化配置外设,生成CubeIDE(集成了CubeMX):st自家图形化编程,简单直观,生成只支持ST自家的芯片。
2024-05-29 16:42:20
577
原创 stm32学习-vs1053使用
1.不能一次性从sd卡中读取所有音频数据通过read每次从sd卡读取4096个字节,没次向vs1053发送32个字节,处理完以后再进行下一次读取,知道从sd读取数据长度小于4096说明一首歌曲文件读取完成或曲度错误。read函数读取文件可以指定每次读取数据长度,下次接着读取。2.单线程如何实现音乐播放同时按键检测。
2024-03-25 09:49:57
1495
原创 多线程编程
1.背景知识相比于多进程效率高,调度以线程为单位,分配内存以进程为单位。防止CPU一直被占用防止同一资源被多线程抢用使用互斥量:和一般变量的区别就是,通过上锁函数检测到锁被其他线程使用时时线程会。mutex状态为0表示共享资源正在被其他线程/进程访问,状态为1表示没有被线程/进程访问。
2024-03-25 09:32:28
232
原创 进程间常用通信方式
使用流程:创建/获取共享内存-附加共享内存(将内存链接进当前进程)-使用内存-分离共享内存-剥离共享内存。5.sockets套接字。
2024-03-21 09:30:17
234
原创 程序运行时,常见存储区分类及作用
作用 栈区(stack) 存放函数的形参和局部变量(auto类型),由编译器自动分配和释放。 生命周期与函数调用相关,函数结束时自动回收。 栈区的大小有限,通常较小。 例如,函数参数和局部变量。 堆区(heap) 由程序员手动申请和释放,需要注意避免内存泄漏。 存放动态分配的内存,如使用malloc或new。 生命周期由程序员控制,程序结束时可能由操作系统回收。 例如,动态分配的对象、数组等。
2024-03-19 10:18:34
588
原创 c++ 全局变量、局部变量、静态全局变量、静态局部变量
参考链接:C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:,,,,。函数执行时存在。
2024-03-19 10:09:24
581
原创 嵌入式学习-网络编程
1.端口、程序、进程关系,多进程监听同一端口(多个网络应用进程监听80端口)如何区分是那个进程的数据2.IP地址是如何被分配的3.如何解决僵尸进程问题添加语句signal(SIGCHLD,SIG_IGN)
2024-03-18 14:45:04
1067
原创 c++ 模板template
如下函数就只能接收int类型数据输入,并返回int类型,想处理string类型或者其他类型只能重新定义一个函数。使用template进行定义,可以同时适用于多种数据类型。有多个模板参数是,增加typename个数就行了。作用:通过template定义。
2024-03-15 22:10:45
397
原创 c++ 字符串常用api
1.截取substr(index,size),从下标index处截取长为size的内容。5.字符串分割,使用stringstream API,需要添加sstream类。6.查找子字符串find(),返回第一次出现的位置,没有会返回一个无穷大值。4.字符串长度size(),不包含最后的‘\0’字符。2.末尾添加字符push_back。3.字符串拼接,直接使用+运算。
2024-03-12 15:38:05
487
2
原创 浅拷贝和深拷贝
(改变一个变量的值,另一个变量也会改变),可以理解为就是创建了一个应用。浅拷贝只复制指向某个对象的指针,不复制对象的数据,新旧对象。深拷贝会复制原对象的额所有元素,
2024-03-11 10:52:04
335
原创 线程和进程
影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响(一个工地烂尾不影响其他工地),但是一个线程崩溃整个进程都死掉(建房子任意一个环节出问题,工地就做不下去了)。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。内存分配:同一进程的线程共享本进程的地址空间和资源(同一工地的公共材料),而进程之间的地址空间和资源是相互独立的(两个工地老板都不同)简单理解进程是为了实现一个大的任务(修一栋大房子),每一个线程负责分工实现其中的各个部分(打灰,粉刷,通水,通电等等)
2024-03-10 12:46:50
407
原创 stm32学习记录-5.2PWM输出控制sg90舵机角度
1.同一定时器输出多路PWM波形都是一样的吗同一个定时器所以频率、相位一样,占空比由各自输出比较配置确定2.输出PWM错误1.端口输出模式要配置为复用推挽输出。2.检查定时器是否选择错误,通道端口号是否正确3.使用定时器高级定时器无法输出PWM高级定时器还要进行主输出使能, TIM_CtrlPWMOutputs。
2024-03-09 12:47:26
3046
1
原创 c/c++ 指针
复杂指针定义涉及较多运算符,分析指针功能从变量名处起,根据运算符优先级结合,一步一步分析。首先根据变量最先进行运算的远算符确定该变量是指针,还是该变量存储的数据类型、返回值是指针。如果该变量是指针,只要把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。int p;//这是一个普通的整型变量int *p;//首先从P 处开始,先与*结合,所以说明P 是一个指针,然后再与int 结合,说明指针所指向的内容的类型为int 型.所以P是一个返回整型数据的指针int p[3];
2024-03-06 19:59:44
454
原创 c/c++ 数组
定义double类型大小为5的数组balance,并初始化前4个元素,剩余元素默认为0;定义double类型数组balance,数组大小由后面初始化数据确定。通过中括号“[]”加下标进行访问,下标要。访问第一个元素1000.0,使用下标0;初始化元素使用大括号‘{}’定义数组使用中括号‘[]’
2024-03-05 10:35:13
346
原创 ACM模式笔试
参考链接:https://blog.youkuaiyun.com/qq_39295220/article/details/116785551
2024-03-05 08:21:11
515
1
原创 stm32学习-FATFS文件系统
1.如何读取SD卡中指定音乐文件,如何知道那一部分是文件名,那一部分是文件内容文件系统自己分配文件名和文件内容间的映射关系2.文件卷名如何确定的(正点原子代码中如何知道SD卡是0:)自己通过宏定义确定的3.写入数据以后直接读取,无法读取到数据写入数据以后,光标指针指向最后,后面没有数据,通过f_lseek函数将光标移动到指定位置。
2024-02-26 10:47:21
441
原创 c++命名空间
1.与引用第三方库区别个人理解本质一样的。选择使用命名空间还是将内容写入库文件中取决于你的需求和项目的规模。如果你只是在单个项目中组织代码,并且不需要与其他项目共享功能,那么使用命名空间可能更加简单和方便。而如果你希望将功能封装为独立的模块,并且可以被多个项目共享使用,那么将内容写入库文件中可能更适合。
2024-02-08 10:45:12
384
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人