分享7道嵌入式面试题,你会几道?
内容提要
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协议通过两条线进行串行通信,主机发送起始信号和停止信号,数据在时钟信号的控制下传输。