分享7道嵌入式面试题,你会几道?

💡 原文中文,约3800字,阅读约需10分钟。
📝

内容提要

static关键字的作用包括修饰局部变量、全局变量、函数、成员变量和成员函数。volatile关键字用于修饰多线程访问的变量。sizeof()计算内存占用字节数,strlen()计算字符串字符个数。浮点数比较时推荐使用范围。IIC协议是一种串行通信协议,包括起始和停止条件、总线裁决、数据位有效性规定等。从机地址和主机地址根据硬件连接确定。

🎯

关键要点

  • static关键字修饰局部变量时,将其转变为静态变量,生命周期与程序相同。

  • static修饰全局变量限制其链接属性,只能在定义所在文件内访问。

  • static修饰函数使其只能在定义文件中调用,声明和定义需在同一文件。

  • static修饰成员变量使其成为类的全局变量,所有对象共享同一实例。

  • static修饰成员函数使其不包含this指针,所有对象共享该函数。

  • volatile关键字用于修饰多线程访问的变量,防止编译器优化导致不一致。

  • volatile适用于并行设备的硬件寄存器、中断服务程序和多任务环境下共享的标志。

  • sizeof()是运算符,计算内存字节数;strlen()是函数,计算字符串字符个数。

  • sizeof()可用于任何类型,strlen()仅适用于以' '结尾的字符串。

  • 比较浮点数时推荐使用范围,避免精度丢失。

  • 在中断中使用浮点运算可能导致数据错误,需谨慎处理。

  • IIC协议是串行通信协议,包含起始和停止条件、总线裁决等。

  • IIC从机地址由硬件连接确定,主机地址在起始信号后传送。

  • 硬件IIC时序由外设控制,软件IIC时序需CPU控制,适用场景不同。

延伸问答

static关键字在局部变量中的作用是什么?

static关键字将局部变量转变为静态变量,其生命周期与程序相同,只初始化一次。

volatile关键字的主要用途是什么?

volatile关键字用于修饰多线程访问的变量,防止编译器优化导致数据不一致。

sizeof和strlen有什么区别?

sizeof是运算符,计算内存字节数;strlen是函数,计算字符串字符个数,且只适用于以' '结尾的字符串。

如何比较两个浮点数是否相等?

推荐使用范围比较,定义一个小的误差值EPSILON,判断两个浮点数的差是否在该范围内。

在中断中使用浮点运算会有什么影响?

在中断中使用浮点运算可能导致数据错误,因为会影响TCP通讯线程的数据处理。

IIC协议的基本工作原理是什么?

IIC协议通过两条线进行串行通信,主机发送起始信号和停止信号,数据在时钟信号的控制下传输。

🏷️

标签

➡️

继续阅读