嵌入式笔试刷题(第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 内核、以及实用电路知识等内容。

全部评论

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务