嵌入式笔试刷题(第32天)
11. 请问下面三种变量声明有何区别?
(1) int const *m; (2) int *const m; (3) int *const *m;
✅ 答案和解析:
- *(1) int const m;m是一个指向常整型数的指针。❗不能通过m修改指向的内容,但可以改变m指向的位置。
- *(2) int const m;m是一个常指针,指向整型数。❗m不能指向别的地方,但可以通过m修改指向的内容。
- **(3) int const m;m是一个指向常指针的指针,常指针指向整型数。❗m可以指向别的常指针,但通过m指向的常指针的地址是不可变的。
(1) |
✅ |
❌ |
(2) |
❌ |
✅ |
(3) |
✅(改m自己) |
❌(改m指向的常指针) |
12. 全局变量与局部变量在内存中是否有区别?是什么区别?
✅ 答案:
- 全局变量存放在静态区(或叫数据段/全局数据段)。
- 局部变量存放在栈区(stack)。
🔍 详细解释:
- 全局变量程序一开始就分配内存,生命周期贯穿整个程序运行过程。
- 局部变量在函数调用时入栈,函数返回时自动出栈销毁。
13. 进程和线程的区别?
✅ 答案:
- 进程(Process):系统资源(内存空间、文件描述符等)分配的最小单位。
- 线程(Thread):CPU调度执行的最小单位,属于进程之内。
🔍 总结对比:
地址空间 |
互不干扰,独立 |
共享 |
开销 |
大 |
小 |
通信 |
需要IPC机制(管道、消息队列) |
直接读写共享变量 |
崩溃影响 |
不影响其他进程 |
线程崩溃可能导致整个进程挂掉 |
14. 多线程的优缺点?
✅ 答案:
- 优点: 资源占用少,共享内存方便程序响应快,适合处理大量并发
- 缺点: 同步控制复杂(容易出现死锁、竞争条件)一个线程崩溃可能影响整个进程
15. 关键字static的作用是什么?
✅ 答案:
- 修饰变量:局部变量:延长生命周期到程序结束(存放在静态区,不再是栈
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式笔试专栏 文章被收录于专栏
本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。