![](https://img-blog.csdnimg.cn/direct/36c22b542ad3472a8a49d4441015efc4.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 65
C语言相关疑难杂症
woainizhongguo.
稳浮萍,清躁心,勿想一步千里,列位看官,且将新火试新茶,诗酒趁年华
展开
-
C语言指针的应用场景
当需要根据某些条件来决定是否改变局部变量的值的时候。原创 2024-08-01 00:06:35 · 61 阅读 · 0 评论 -
(转)高级裸编程思想 -- 并行多任务程序
裸机编程时,由于没有类似于操作系统的任务调度这种可以管理任务的功能,所以各任务的执行都是一个接着一个顺序执行,这样很容易因为其中的一个任务占据了单片机过多的时间而造成别的任务响应不及时(比如按键事件的到来),那么如何实现并行运行,使各任务及时在有效的时间内得到单片机CPU的使用权呢?这里所提到的并行多任务程序开发就是解决这种问题的一种有效方法。当然,这里的并行并不是真正的并行,因为单片机是一种单核的CPU,一次只能执行一条程序,这里的并行指的则是一种类似并行的效果。转载 2024-07-21 16:01:11 · 16 阅读 · 0 评论 -
(转)单片机高级裸机编程(一)-- 数据驱动程序
对于这个波形,如果我们不采用数据驱动程序的方法,那么相当于重写(重新分阶段,不难但是繁琐),而使用这种高阶的方法后,解释器代码一个字母都不用改变。这就要求我们将代码逻辑分解出其内在数据关系,这样我们就可以写出与数据无关的函数,这样的函数通用性很大,利于复用,耦合性也比较低,利于修改,且修改后不易出错。虽然数据驱动代码这种高阶的方法不是万能,但是对于相似的编程要求,则给我们提供了一种可复用的方法,避免一些简单却繁琐的工作任务。(4)好处:似乎没有看出了,牺牲了易读性,有得必有失,我们会的得到什么?转载 2024-07-21 15:57:40 · 24 阅读 · 1 评论 -
C语言 - 开发技巧篇
使用。原创 2024-07-21 13:33:10 · 693 阅读 · 0 评论 -
C语言入坑 ---- 不要轻易忽略volatile的用处
C语言入坑 ---- 不要轻易忽略volatile的用处转载 2024-07-21 13:26:36 · 8 阅读 · 0 评论 -
C语言面试题
没有被初始化,它可能指向任何随机的内存地址,试图写入这个地址将导致未定义行为,这通常会导致程序崩溃或运行时错误。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。三、指针操作超越了变量的作用范围。比如不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放。二、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。没有被初始化,所以不能安全地解引用它,从而导致运行时异常。在这段代码中,首先声明了一个指向整数的指针。原创 2024-07-21 12:47:47 · 154 阅读 · 0 评论 -
嵌入式C编程技法之“数据驱动编程“
最后对于数据驱动编程并不是万能的,可能对于有些设计反而起到副作用,一般用于实现逻辑相对比较清晰的处理,不过对于简化条件语句还是非常好用的,所以对于这些编程思路,需要根据具体情况进行选择,同时也要对目标项目有较强的理解能力。原创 2024-07-20 23:51:42 · 620 阅读 · 0 评论 -
C语言-结构体-进阶小技巧
Fuction : 结构体定义区* Author : (公众号:最后一个bug)} STest;//这里主要是进一步让大家理解第二个宏 //且右侧必须加() iTest =({Val;});printf("欢迎关注公众号:最后一个bug\n");return 1;* Fuction : 结构体定义区* Author : (公众号:最后一个bug)} STest;原创 2024-07-20 23:22:02 · 616 阅读 · 0 评论 -
编译器关键字解析
在一些特定的编译器中,特别是在嵌入式系统的开发中,__root 可以用来指示编译器将变量存放在特定的存储区域中,例如 Flash 存储器中,而不是默认的存储区域。在你提供的代码中,__IO 可能被用来告诉编译器 UniqueID[i] 是一个与硬件相关的状态或配置信息,它的值是从地址 0x4925+i 处的外部设备或寄存器中读取得到的。这个关键字通常在嵌入式系统的开发中使用。__root 是一个编译器特定的关键字,通常用于告诉编译器将变量放置在代码的根部(Root),以确保该变量的全局可见性和可访问性。原创 2024-04-25 23:47:49 · 293 阅读 · 0 评论 -
单片机开发常见算法
11.图形处理算法在需要显示或处理图像的单片机应用中,可能会用到点阵显示、图形变换、颜色处理等算法,在一些点阵屏,TFT屏的应用比较多,这个一般根据实际的图形或者屏尺寸制定算法。如遗传算法、模拟退火算法等,用于寻找问题的最优解或近似最优解,像遗传算法一般用来做机器人的路径规划,以找到最优的移动路径,避开障碍物,做过智障小车的小伙伴,应该比较熟悉了。涉及字符串的比较、复制、连接、查找、替换等操作,这些算法在单片机上面也会用到,比如屏显示,json、物联网模块的指令数据处理。原创 2024-04-22 18:05:51 · 777 阅读 · 0 评论 -
C语言指针加法/减法
如果改变了指针类型指向的数据类型,对指针进行 + - 运算,其新指向的位置只和转换后的数据类型有关。指针的减法运算公式:就是两个指针的内存差值 / 指向的数据类型的内存空间大小。如果是char , 则指针指向变化1byte。如果是int,则指针指向变化4byte。原创 2024-04-20 17:55:34 · 158 阅读 · 0 评论 -
C语言 常用库函数
【C语言】详解atoi函数【C语言】C语言 atoi 函数解析【C语言进阶】最常用的库函数大全——从入门到精通原创 2024-03-31 23:19:38 · 201 阅读 · 0 评论 -
汇编指令 BX LR
当通过BL或BLX指令调用子程序时,硬件自动将子程序返回地址保存在R14寄存器中。在子程序返回时,把LR的值复制到程序计数器PC即可实现子程序返回。二、当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2),因此在各种异常模式下可以根据LR的值返回到异常发生前的相应位置继续执行。BX LR的作用等同于 mov pc,lr。下面这个图是我实际遇到的,也不难理解了。一、用来保存子程序返回地址;转载自 青 nih的博客。原创 2024-03-27 18:07:19 · 462 阅读 · 0 评论 -
C语言 - 十六进制记忆小技巧
十六进制记忆原创 2024-03-27 16:35:04 · 193 阅读 · 0 评论 -
C语言 数组指针 & 指针数组
(p+1)单独使用时表示的是第 1 行数据,放在表达式中会被转换为第 1 行数据的首地址,也就是第 1 行第 0 个元素的地址,因为使用整行数据没有实际的含义,编译器遇到这种情况都会转换为指向该行第 0 个元素的指针;每一个一维数组又包含了 4 个元素,例如 arr[0] 包含 a[0][0]、a[0][1]、a[0][2]、a[0][3]。[]的优先级高于*,()是必须要加的,如果赤裸裸地写作int *p[4],那么应该理解为int *(p[4]),p 就成了一个指针数组,而不是二维数组指针。原创 2024-03-24 14:55:18 · 917 阅读 · 0 评论 -
C语言一级指针、二级指针(看这篇就够了)
从上面代码我们看出来,一开始我们的ptr指针,指向的数据是num1的地址,但是现在如果我想要他指向num2,则我就必须把num2的地址赋值给ptr,而函数内部,如果你想修改外部的指针的指向。结果好家伙,你倒好,你到了小明家,把人家东西偷了,最后被抓了,你还说是我指示你这么干的。在单片机内部,用不同的数据类型,每个数据类型占用的内存空间不尽相同,当我们在执行函数的时候,学过C语言的都知道,这个时候,你可能会想,那不久完事了,我的目的达到了,我改变了ptr的指向,以后你想要获取新指向的内存空间的数据。原创 2024-03-22 18:14:47 · 1038 阅读 · 0 评论 -
sscanf函数使用详解(转载)
上面的格式中,[0-9]表示这是一个仅包含0-9这几个字符的字符串,前面使用数字31修饰词表示这个字符串缓冲区的最大长度(这也是sscanf最为人诟病的地方,很容易出现缓冲区溢出错误,实际上sscanf是可以避免出现缓冲区溢出的,只要在书写任何字符串解析的格式时,注意加上其缓冲区尺寸的限制)。"%04d%02d%02d"是用来解析字符串的格式,%表示格式转换的开始,d表示转换为一个整数,04作为d的修饰,表示这是一个长度为4位的整数,不足4位时以0补齐。其后是一序列数目不定的指针参数,存储解析后的数据.转载 2024-03-21 17:10:14 · 345 阅读 · 0 评论 -
C语言-设计模式
在这个示例中,我们使用了AVR单片机的外部中断0(INT0)来模拟按钮的按下事件,当按钮按下时,硬件会自动触发INT0中断,并执行INT0中断服务程序(ISR)。在主程序中,我们根据当前状态执行相应的操作,例如在等待玩家输入状态下等待按钮按下,而在游戏进行中状态下执行游戏逻辑。在单片机开发中,观察者模式通常用于实现事件驱动的系统,其中多个模块或组件可以注册为观察者,以便在事件发生时接收通知并执行相应的操作。在这个示例中,我们定义了三种设备类型:灯、风扇和空调,并实现了对应的打开和关闭命令执行函数。原创 2024-03-14 16:11:30 · 1096 阅读 · 0 评论 -
C语言-回调函数的应用
回调函数就是一个被作为参数传递的函数。在C语言中,回调函数只能使用函数指针实现,在C++、Python、ECMAScript等更现代的编程语言中还可以使用仿函数或匿名函数。原创 2024-03-14 14:29:01 · 384 阅读 · 0 评论 -
C语言bool类型
在C99开始引入了布尔类型,但是他并不是C语言内置的数据类型。而是C语言通过 帮我们实现了对布尔类型数据的判定。(2)bool 为非0[数字0] 其余既1的特性 (这里的0和1都表示正负数数字类型)在C语言标准(c89)并未定义布尔类型,判断数据为0 = 假,非0 = true。(1)stdbool宏定义了 true = 1,false = 0。原创 2024-03-10 16:02:25 · 568 阅读 · 0 评论