单片机岗位常见面试问题——C语言(4)

一、结构体字节对齐

字节对齐就是规定数据在内存中的存储起始地址必须是某个特定字节数(通常是数据类型的大小)的整数倍。 这是读取效率问题,用时间换空间的最好例子。

二、联合体

在同一地址空间中存储不同类型的数据,实例:用来分离高低字节。举例:实习的时候开发采集模块时,485采集到的数据是会根据组合方式来进行计算,比如DCBA的形式,会采用结构体嵌套联合体的方式重新组合成ABCD形式以后再进行后续计算。

三、类型转换

将 uint32_t 数据赋值到 uint8_t 数组中

uint32_t data = 123;

uint8_t databuf[4] = {0};

*( (uint32_t *)databuf ) = data;

//等价于memcpy(databuf, &data, 4);

四、隐式类型转换

C 语言中不同类型的数据需要转换成同一类型,才可以计算

转换规则:

1. 转换按照数据长度增加的方向进行,以保证精度不降低。如 int 和 double相加时,int 会被隐式转换成 double 类型

2. 如果两种类型的字节数一样,且一种有符号,另一种无符号,则转换成无符号类型

3. char 类型和 short 类型参与运算时,必须先转换成 int 类型整型提升

五、比较浮点数

整形是以补码的方式存储

对于32位的浮点数,在内存中最高的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M

// float 4byte

abs(a-b) < 0.00001 1e^-5; //近似a==b

// double 8byte

// 判断阈值更小,16位左右

六、为什么局部变量未定义时,每次初始化的结果是不确定的

定义局部变量,其实就是在栈中通过移动栈指针,来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上,而栈内存是反复使用的(脏的,上次用完没清零的) ,所以说使用栈来实现的局部变量定 义时如果不初始化,里面的值就是一个垃圾值。

七、变长结构体(柔性数组)

在结构体中定义长度为0的数组,用以后续开辟变长buf,释放时仅释放结构体即可。

实例:ringbuffer

八、CRC校验

循环冗余校验, 它的基本原理是通过多项式除法来生成一个固定长度的校验码,以检测数据在传输或存储过程中是否发生了错误。

#通信硬件知识分享#

单片机岗位必备八股知识 文章被收录于专栏

包括c语言常见知识和语法,数据结构,通信协议,STM32,计算机体系结构和硬件,freertos等等

全部评论

相关推荐

不愿透露姓名的神秘牛友
2024-12-30 09:52
高标 软硬件助理 12*(13-16) 硕士其他
点赞 评论 收藏
分享
2024-12-27 08:56
已编辑
北京邮电大学 C++
1.&nbsp;如何在嵌入式系统中实现蓝牙音频传输?2.&nbsp;在STM32中如何配置和使用DMA进行数据传输?3.&nbsp;嵌入式系统中如何实现步进电机控制?4.&nbsp;如何在嵌入式系统中实现图像的模板匹配?5.&nbsp;在FreeRTOS中如何实现任务的时间片轮转调度?6.&nbsp;嵌入式系统中如何实现非易失性存储器的读写?7.&nbsp;如何在STM32中实现以太网的TCP/IP协议栈?8.&nbsp;在RT-Thread中如何实现线程的优先级管理?9.&nbsp;嵌入式系统中如何实现数据的安全传输?10.&nbsp;如何在STM32中配置和使用UART进行串口通信?11.&nbsp;嵌入式系统中如何实现音频的录制与播放?12.&nbsp;在FreeRTOS中如何实现任务间的事件通知?13.&nbsp;如何在嵌入式系统中实现温度传感器的校准?14.&nbsp;在STM32中如何实现CAN总线的滤波与接收?15.&nbsp;嵌入式系统中如何实现气体传感器的数据处理?16.&nbsp;如何在RT-Thread中实现内存池的使用?17.&nbsp;嵌入式系统中如何实现电源管理与节能策略?18.&nbsp;在STM32中如何实现USB设备模式的通信?19.&nbsp;如何在嵌入式系统中实现数据的实时传输与处理?20.&nbsp;在FreeRTOS中如何实现互斥锁的使用?21.&nbsp;嵌入式系统中如何实现图像的颜色空间转换?22.&nbsp;如何在STM32中配置和使用外部中断?23.&nbsp;嵌入式系统中如何实现智能传感器的集成?24.&nbsp;在RT-Thread中如何实现文件的读写操作?25.&nbsp;如何在嵌入式系统中实现人机交互界面?26.&nbsp;在STM32中如何实现ADC的多通道采样?27.&nbsp;嵌入式系统中如何实现数据的实时监测与报警?28.&nbsp;如何在FreeRTOS中实现任务的优先级继承?29.&nbsp;嵌入式系统中如何实现运动传感器的数据融合?30.&nbsp;在STM32中如何实现图形用户界面的显示与操作?我面试看的是大佬的面经,链接放下边了&nbsp;&nbsp; http://daxprogram.com
点赞 评论 收藏
分享
评论
2
2
分享
牛客网
牛客企业服务