猿来不是梦
码龄5年
关注
提问 私信
  • 博客:39,878
    社区:1
    问答:214
    40,093
    总访问量
  • 20
    原创
  • 39,020
    排名
  • 205
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:不积跬步无以至千里

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:山东省
  • 加入CSDN时间: 2020-03-18
博客简介:

langhunxiaoyue的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    307
    当月
    17
个人成就
  • 获得368次点赞
  • 内容获得31次评论
  • 获得532次收藏
  • 代码片获得693次分享
创作历程
  • 12篇
    2024年
  • 8篇
    2023年
成就勋章
TA的专栏
  • RT_Thread操作系统
    3篇
  • FreeRtos操作系统
    9篇
兴趣领域 设置
  • 编程语言
    c++c语言汇编
  • 数据结构与算法
    算法数据结构
  • 嵌入式
    单片机rtdbs
  • 硬件开发
    arm开发
  • 操作系统
    risc-v
  • 数学
    傅立叶分析
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

RT_Thread内核源码分析(三)——线程

基于RT_Thread Nano V3.1.5版本,分析系统线程结构、状态、源码、调度等。
原创
发布博客 2024.11.21 ·
894 阅读 ·
27 点赞 ·
0 评论 ·
22 收藏

RT_Thread内核源码分析(二)——链表和对象管理

本章基于RT_Thread Nano V3.1.5版本分析内核源码,主要分析链表管理和对象。
原创
发布博客 2024.09.24 ·
716 阅读 ·
29 点赞 ·
0 评论 ·
17 收藏

RT_Thread内核源码分析(一)——CM3内核和上下文切换

基于STM32F103ZE单片机+keil5编译器分析RT_Thread启动及运行过程,主要涉及CM3的内核知识、操作系统启动、上下文切换。
原创
发布博客 2024.05.28 ·
1139 阅读 ·
27 点赞 ·
0 评论 ·
37 收藏

FreeRtos内核源码分析(九)——协程

基于FreeRtos V9.0.0版本分析FreeRtos的协程,包括协程结构、管理方式、调度方式、通信机制等,其中包括原理和源码的分析
原创
发布博客 2024.05.08 ·
1202 阅读 ·
16 点赞 ·
2 评论 ·
21 收藏

FreeRtos内核源码分析(八)——软件定时器

基于FreeRtos V9.0.0版本分析FreeRtos的软件定时器,包括软件定时器数据结构、接口函数、定时器任务源码、工作机制等。
原创
发布博客 2024.04.28 ·
1214 阅读 ·
21 点赞 ·
3 评论 ·
21 收藏

FreeRtos内核源码分析(七)——任务通知

基于FreeRtos V9.0.0版本分析FreeRtos的任务通知,包括任务通知的结构、发送/等待、释放/获取,以及详细的代码分析。
原创
发布博客 2024.04.23 ·
881 阅读 ·
30 点赞 ·
0 评论 ·
15 收藏

FreeRtos内核源码分析(六)——事件

基于FreeRtos V9.0.0版本分析FreeRtos的信号量,包括信号设置、等待、同步等功能,详细说明事件同步功能和阻塞机制。
原创
发布博客 2024.04.17 ·
783 阅读 ·
8 点赞 ·
0 评论 ·
22 收藏

FreeRtos内核源码分析(五)——信号量

基于FreeRtos V9.0.0版本分析FreeRtos的信号量,包括二值信号、计数信号、互斥信号、递归互斥信号;主要分析信号的结构、源码、使用场景、注意事项。
原创
发布博客 2024.04.12 ·
899 阅读 ·
30 点赞 ·
0 评论 ·
18 收藏

FreeRtos内核源码分析(四)——消息队列

基于FreeRtos V9.0.0版本分析FreeRtos的消息队列,涉及消息队列的源码分析、逻辑图分析、工作原理、阻塞分析、队列集合分析等。
原创
发布博客 2024.04.10 ·
1288 阅读 ·
21 点赞 ·
3 评论 ·
21 收藏

FreeRtos内核源码分析(三)——内存管理

基于FreeRtos V9.0.0版本分析FreeRtos的内存管理方式(heap_1、heap_2、heap_3、heap_4、heap_5),主要包括源码分析、流程图分析、特点和使用场合。
原创
发布博客 2024.04.01 ·
1195 阅读 ·
31 点赞 ·
1 评论 ·
30 收藏

FreeRtos内核源码分析(二)——任务部分

分析FreeRtos任务新建、状态切换、调度、监视的过程,并对源码进行分析。
原创
发布博客 2024.03.27 ·
1126 阅读 ·
29 点赞 ·
0 评论 ·
30 收藏

FreeRtos内核源码分析(一)——CPU内核部分

基于STM32F103ZE单片机+keil5编译器分析FreeRtos启动及运行过程,主要涉及CM3的内核知识、FreeRtos启动及上下文切换。
原创
发布博客 2024.02.23 ·
1970 阅读 ·
35 点赞 ·
2 评论 ·
35 收藏

使用minizip+zlib加密压缩多级文件夹并使用第三方工具解密解压(C++)

使用minizip+zlib加密压缩一个文件夹,使用第三方工具WinRARA等进行解密解压。
原创
发布博客 2023.06.26 ·
3338 阅读 ·
3 点赞 ·
15 评论 ·
15 收藏

C语言字符串数组拼接问题

答:

不能用strlen,strlen计算字符串大小的函数,改用sizeof,用于计算数组大小。
第二个for循环中的第二个if语句去掉。
另外,问题中的代码属于简单粗暴类型的,数组c有写越界的风险,建议增加防护优化一下。

回答问题 2023.04.12

字符及字符串操作(2)——<stdlib.h>中C/C++库函数详解及实例

详解<stdlib.h>中函数源码和使用:atof、atoi、atol、atoll、strtod、strtof、strtol、strtol
原创
发布博客 2023.04.06 ·
998 阅读 ·
3 点赞 ·
0 评论 ·
11 收藏

字符及字符串操作(1)——<string.h>中C/C++库函数详解及实例

详解源码和使用:memcmp、memicmp、strcmp、stricmp(strcmpi)、strncmp、strnicmp(strncmpi)、memcpy、memccpy、memmove、strcpy、strncpy、strdup、memchr、memrchr、strchr、strrchr、strstr、strspn、strcspn、strpbrk、strcat、strncat、strupr、strlwr、memset、strset、strnset、strlen、strrev、strtok、
原创
发布博客 2023.03.19 ·
1214 阅读 ·
1 点赞 ·
0 评论 ·
9 收藏

全局变量和局部变量作用域问题

答:

你把断点设置在括号的位置,监视的是fun函数的形参n,而不是main函数的实参n,这个位置是fun函数调用起始的位置,在静态变量语句前要进行现场保存,返回值、形参入栈等操作;所以在括号位置,形参还没有入栈和赋值,形参n的值是没有初始化的值。这块内容是编译器自动处理的,高级语言不体现,我们通过转反汇编去看,我用的是VS2017转汇编,如下所示
这个是函数fun(n)调用,可以看到对形参的入栈和赋值在断点之后,所以断点位置的形参是个栈内未初始化值。

img

然后说一下main函数中的n是否消失?答案是否定的,main函数中的实参n还在栈中没有释放,它的生存周期还没有结束,只是被阻塞了,当fun函数返回后,实参n仍然有效,只有main函数返回后,实参n才会从栈中释放,他的生存周期才结束。
最后说一下k,k是全局变量,在全局变量数据区存储,是个固定的存储区域,它的生命周期在整个软件的运行过程中。当软件停止运行,它的生命周期才结束。
综合一下,有以下几个知识点。
1.局部变量存储在栈内,通过出入栈动态分配空间。对于C语言,函数返回后,局部变量出栈释放。未初始化的局部变量初始值是不确定值。
2.实参变量形参变量是两个变量,在各自的函数栈分配,入口括号位置,函数栈还没有分配好。
3.全局变量存储在全局变量段,存储位置固定,生存周期是整个软件运行期间。未初始化的全局变量为0。

回答问题 2023.02.15

关于用小数点符号的浮点数字问题

答:

printf打印格式为:%[flags][width][.prec][length][type]模式
首先问题中的%3.1f是一个右对齐的格式,左对齐是3前面加个负号。
3:[width]表示输出的最小长度(包含小数点),对于右对齐,打印长度小于3时,左侧补充空格。
.1:[.prec]对于浮点f,表示打印小数点后的位数。
比如:用%10.2f打印浮点数1.0,打印的结果6个空格加1.00。
如果想详细了解printf原理及其打印规则请参看
C语言Printf函数深入解析

回答问题 2023.02.15

为什么浮点型有误差?

答:

要理解这个问题就从IEEE754的编码格式入手,浮点类型是一个离散的数据集合,并不是连续,0.4不在这个集合中,编译器会解析一个最接近0.4的编码;更详细的内容参照C语言浮点数据类型详解及常见的坑

回答问题 2023.02.15

C语言的整数溢出及其解决办法

答:

1.对于无符号整形,溢出后会截断,取有效位数据,比如短整形数据(unsigned short)0xffff加1后会出现进位,仅取低2字节为0。
2.对于有符号整形,溢出后会导致数据符号位的变化,比如短整形数据(short)32767加1后为-32768。
3.对于计算公式,从平台寄存器字长考虑,比如对于32位pc机,两个短整形数据(unsigned short)相乘,计算结果会存在32位的寄存器中,结果是永远不会溢出。两个整形数据(unsigned int)相乘,则会有溢出的可能。这种溢出会导致状态寄存器置溢出位。
4.要避免溢出造成的计算结果异常,可以从如下几个方面:
(1)整形计算一定明确取值范围,如有溢出风险可以使用更长字节的整形或浮点类型。
(2)注意类型转换及计算顺序,类型装换会导致精度丧失,计算顺序的不同,结果可能不一样,计算过程中有可能出现溢出现象,比如“先乘后除”和“先除后乘”结果很多时候就不一样。
(3)如果从事嵌入式开发,可以监视一下状态寄存器。

回答问题 2023.02.15
加载更多