中级嵌入式开发工程师面试题(含真实落地答案).docxVIP

  • 2
  • 0
  • 约3.61千字
  • 约 6页
  • 2026-07-28 发布于河北
  • 举报

中级嵌入式开发工程师面试题(含真实落地答案).docx

中级嵌入式开发工程师面试题(含真实落地答案)

一、C语言核心基础(嵌入式必考)

1、嵌入式中static、const、volatile关键字的实际作用?

参考答案:

1)static:修饰局部变量时,变量存放在静态存储区,生命周期贯穿整个程序运行周期,不会随函数调用结束销毁;修饰全局变量/函数时,限制作用域仅为当前.c文件,防止跨文件调用冲突,项目中常用于封装模块私有变量和接口。

2)const:修饰变量为只读,编译阶段禁止修改。嵌入式中常用const修饰常量、字符串、配置参数,让数据存储在Flash而非RAM,节省内存空间。

3)volatile:强制编译器不优化该变量,每次使用都从内存/寄存器实时读取,不使用缓存值。主要用于寄存器地址、中断共享变量、多任务共享变量,避免编译器优化导致数据读取错误。

2、指针和数组的核心区别?项目中常见坑?

参考答案:

区别:数组名是数组首地址的常量指针,不能修改指向;普通指针是变量,可以随意修改指向。sizeof(数组)得到数组总长度,sizeof(指针)永远是4字节(32位MCU)。

常见坑:函数形参中数组会被退化为指针,此时sizeof无法获取数组真实长度,必须单独传长度参数;字符串拷贝时未判断结束符、指针越界,导致内存踩踏、死机。

3、结构体对齐原理?嵌入式为什么要手动对齐?

参考答案:

编译器默认按照成员最大字节数对齐,目的是提升CP

文档评论(0)

1亿VIP精品文档

相关文档