- 博客(34)
- 收藏
- 关注
原创 代码块区 ,栈区,堆区,全局静态区的区别
程序代码区:存储程序的机器码,只读,程序运行期间不变。全局(静态)区:存储全局变量和静态变量,程序启动时初始化,生命周期贯穿整个程序。栈区:存储函数的局部变量、参数和返回地址,由编译器自动管理内存分配和释放。堆区:用于动态内存分配,需要程序员手动管理内存的分配和释放。分享堆区(heap)和栈区(stack)的区别静态变量和全局变量的区别全局(静态)区(static)的生命周期是怎样的?
2025-02-26 20:59:16
357
原创 volatile的用法
在 C 语言中,volatile是一个类型修饰符,它主要用于告诉编译器该变量的值可能会以编译器无法预知的方式被改变,因此编译器在对该变量进行优化时需要采取特殊处理。下面详细介绍volatile关键字的作用及使用场景。
2025-02-26 20:55:35
283
原创 回调函数的用法
回调函数的基本用法回调函数是一种被作为参数传递给另一个函数的函数,接收回调函数作为参数的函数在合适的时候会调用这个回调函数。回调函数为代码提供了更高的灵活性和可扩展性,下面为你详细介绍回调函数的基本用法。
2025-02-26 20:55:12
403
原创 通过指针传递给函数
数组名本质上是数组首元素的地址,所以可以直接将数组名(也就是数组指针)传递给函数。可以将指针类型的数据再通过指针传递给函数,也就是传递指针的指针。这种方式常用于函数需要修改调用者中的指针变量本身。枚举类型也可以通过指针传递给函数。这样函数可以修改枚举变量的值或者根据枚举值进行不同的操作。等整数类型都能通过指针传递给函数。这种方式常用于函数需要修改调用者中整数变量的值。可以将字符串指针传递给函数进行字符串处理,如查找、替换、复制等操作。类型同样能通过指针传递,常用于函数需要修改字符变量的值或者处理字符数组。
2025-02-26 20:11:26
162
原创 传递指针给函数的用法
在 C 语言中,将指针传递给函数是一种常见且重要的编程技巧,它可以让函数直接操作调用者提供的内存区域,实现数据的修改、避免数据的复制开销等。下面为你提供几个不同场景下传递指针给函数的例子。
2025-02-26 20:05:11
122
原创 共同体的常见用法
收起cshort word;定义了一个共同体类型,它包含两个成员:short word:一个 16 位的短整数,用于存储一个 16 位的数值。} bytes:一个嵌套的结构体,其中low表示低 8 位,high表示高 8 位,每个成员都是 8 位的无符号字符类型。
2025-02-26 19:57:33
1496
原创 scanf和sprintf,memcopy,memmove等语法
const有作用域有类型检查安全一点#define无作用域没有类型检查,不安全。
2025-02-26 19:43:09
312
原创 数据结构与算法
数组和链表的区别--数组在内存中是连续存储的,但是链表在内存中式随机存储的--数组访问元素的效率较高,插入和删除的效率低,链表则相反--数组占用的内存空间相对更少,因为链表的每个元素需要额外存储下一个字节的地址栈和队列的区别-栈:先进后出,后进先出,添加和删除元素都在栈顶-队列:先进先出,后进后出,在队尾添加元素,在队头删除元素快慢指针有哪些应用(链表操作)-判断链表是否有环两个指针同时从一第一个节点出发,一个指针一次走一步,一个指针一次走两步,
2025-02-24 20:18:21
298
原创 进程中实现一个进程发一个进程收
/mq_fd:消息队列文件描述符 data:发送的数据 strlen(data)+1:发送数据的长度 1:发送的优先级。//在/dev/mqueue下创建的文件名。//mq_fd:消息队列文件描述符 buf:接收的数据 sizeof(buf):接收数据的长度 0:接收的优先级。//mq_name:消息队列文件名 attr:消息队列属性 O_RDWR | O_CREAT:读写权限。//pt1:线程id NULL:线程属性 send_msg:线程函数 NULL:线程参数。//fd:消息队列文件描述符。
2025-02-24 18:43:35
223
原创 I/O标准库(fputs,fgets,printf)和底层驱动调用(read,write)的区别
【代码】I/O标准库(fputs,fgets,printf)和底层驱动调用(read,write)的区别。
2025-02-24 16:50:26
393
原创 open()read()write()close()
/如果没有该文件就创建该文件,以能写的方式打开该文件,重新写入时追加到最后。//以只读文件打开love1。printf("打开度文件失败");printf("打开写文件失败");//写到love2.txt中。//打开love2.txt文件。//打开love.txt文件。//关闭度文件和写文件。
2025-02-24 16:42:27
164
原创 linux关于多进程的加锁
/ 将接收的v参数转换为int指针// 对指向的内存int数据加1,也就是给num加1int num;// 被n个线程进行不断累加的变量// 启动20000个线程对num进行累加i++)// 等待所有线程执行的结果i++)
2025-02-24 10:15:26
1201
1
原创 cjson字符串的解析
log_debug("解析失败\n");//将CJSON对象转换为字符串。//创建一个空的CJSON对象。//2.解析json字符串。//生成json字符串。//向对象中添加键值对。
2025-02-21 19:14:53
142
原创 论如何设置hal库中的中断定时器的占空比(无人机)
预分频为4-1,故频率为72MHZ/4 = 18MHZ ,重装载为1000,故频率又变成18kHZ刚好低于20khz。故这里设置预分频为4-1 重装载为1000 占空比arr一般为0因为开始电机不转。由于直流无刷电机的最大频率是20kHZ。这里电机的挡位为1000挡,挡位越多越好。
2025-02-13 17:27:13
94
原创 无人机的陀螺仪的角速度和加速度滤波
卡尔曼滤波,有点难,但是基本原理跟一阶低通滤波差不多,都是用new数据的比例加上old数据的比例,只不过,卡尔曼滤波的系数可以变化。
2025-02-13 16:23:48
207
原创 论如何oat实现远程升级
ota可以实现远程升级,就是将ota0号分区的功能,切换ota1号分区的功能。python-mhttp.server8080创建本地服务器。改成你要升级的文件路径(可以先提前验证是否能在网站正常打开)1.将要升级的.bin文件放到一个无中文路径的文件夹中。分完之后在设置中找到part中使用改分区。访问localhost:8080打开。cd文件路径,会跳转到该路径。2.粘贴整理好的ota代码。
2025-01-17 21:33:05
147
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人