
第 1 题题目简述 static 关键字在 C 语言中的三种使用场景与各自作用 答案修饰局部变量变量存储在全局数据区函数执行结束不销毁仅首次调用初始化仅本函数可访问。修饰全局变量作用域限制在当前.c 文件其他文件无法 extern 引用。修饰函数函数仅能在当前源文件内调用对外隐藏接口减少命名冲突。第 2 题题目const char *p、char const *p、char *const p 三者有什么区别 答案const char *p/char const *p指针指向的内容只读可修改指针本身指向别的地址。char *const p指针地址固定不可修改指针指向的数据可读可写。const char *const p指针地址、指向内容均不可修改。第 3 题题目什么是联合体 union和 struct 结构体有什么区别嵌入式有哪些使用场景 答案 union 联合体所有成员共用同一块内存空间内存大小等于最大成员长度struct 每个成员独立分配内存总大小受内存对齐影响。 使用场景判断系统大小端、通信协议报文解析、寄存器多格式读取节省内存空间。第 4 题题目简述内存对齐的规则嵌入式开发中为什么要重视结构体内存对齐 答案 对齐规则1. 结构体成员偏移量是自身类型字节数整数倍2. 结构体整体总大小是最大基础成员字节的整数倍。 原因MCU 硬件访问未对齐内存会产生硬件异常、降低读写速度解析通信协议、NFC 卡片数据时对齐错误会造成数据解析错乱。第 5 题题目简述悬空指针与内存泄漏的概念、产生原因以及对应的解决办法 答案悬空指针堆内存 free 释放后指针未置 NULL依旧指向已回收内存。规避free 后立刻赋值 ptrNULL。内存泄漏malloc 分配堆内存后未调用 free 释放程序运行中可用内存持续减少最终设备死机。规避动态内存成对申请释放嵌入式尽量少用动态分配。