题目 1

C 语言 #pragma pack 的作用,嵌入式开发什么时候使用?有什么弊端? 答案: 作用:手动修改编译器默认内存对齐系数,控制结构体对齐。 场景:通信协议报文、寄存器结构体,要求结构体无填充字节,和协议格式严格一致。 弊端:强制取消对齐后,部分 MCU 访问非对齐内存会硬件异常、代码执行变慢,平台兼容性变差。

题目 2

什么是回调函数?C 语言如何实现回调函数,嵌入式有哪些典型使用场景? 答案: 回调函数:把函数指针作为参数传给另一个函数,满足条件时由对方调用该函数。 实现方式:定义函数指针类型,将函数地址传入。 场景:中断服务函数注册、外设驱动事件处理、RTOS 钩子函数、协议层事件通知。

题目 3

C 语言中 memcpymemmove 的区别,什么情况下不能使用 memcpy? 答案: memcpy内存拷贝,不处理内存源地址与目标地址重叠;源和目标内存重叠会产生数据错乱。 memmove支持内存重叠拷贝,内部会做缓冲区处理,安全性更高。 源缓冲区和目标缓冲区存在地址重叠时,禁止使用 memcpy,应当使用 memmove。

题目 4

C 语言中 auto 关键字作用,为什么实际开发几乎看不到它? 答案: auto 用来声明自动局部变量,存储在栈上,函数退出自动销毁。 局部变量默认属性就是 auto,可以省略不写;几乎所有代码都省略该关键字,因此很少见到。auto 不能修饰全局变量。

题目 5

什么是函数指针?函数指针和指针函数的区别,写出简单示例。 答案: 指针函数:返回值为指针的普通函数; 函数指针:专门存放函数地址的指针变量,可以指向同类型的函数。 示例: int *fun1(); 指针函数,返回 int*; int (*fun2)(int); 函数指针,保存入参 int、返回 int 的函数地址。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐