嵌入式笔试专栏(第7天)

11. C 语言中 const 和 define 有什么区别?

答案:

编译时处理

预处理阶段替换

编译阶段常量

类型检查

无类型

有类型

调试信息

作用域

全局(文件级)

遵循 C 的作用域规则

建议

尽量用

const

替代

#define

常量定义,提高类型安全性

12. 请写出两个线程同步的方法,并简述原理。

答案:

  • 互斥锁(Mutex): 原理:线程访问共享资源前加锁,访问完释放锁,确保同一时刻只有一个线程访问。
  • 信号量(Semaphore): 原理:通过计数器控制多个线程对共享资源的访问,信号量为0时其余线程阻塞。

13. 简述堆和栈的区别。

答案:

管理方式

编译器自动分配释放

程序员手动管理

生命周期

函数调用结束后自动销毁

手动释放,否则会内存泄漏

大小

一般较小(KB~MB)

较大(取决于系统)

分配速度

使用方式

局部变量

malloc/new 分配

14. 下面这段代码有问题吗?如果有,请指出问题所在:

char *str;
strcpy(str, "hello world");

答案:

有问题:str 是未初始化的指针,未指向有效内存,调用 strcpy 会导致段错误(segmentation fault)。应先分配内存:

char str[100]; // 或使用 malloc
strcpy(str, "hello world");

15. C 语言中,什么是悬垂指针(Dangling Pointer)?

答案:

悬垂指针是指指向已释放内存的指针。常见场景:

  • 函数返回了局部变量地址
  • 内存被 之后继续使用该

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式笔试专栏 文章被收录于专栏

本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。

全部评论
点赞 回复 分享
发布于 04-25 21:40 山西
😄😄😄😄
点赞 回复 分享
发布于 04-25 16:24 上海
忍耐王
点赞 回复 分享
发布于 04-15 15:10 黑龙江

相关推荐

北漂的牛马人:211佬,包进的,可能是系统问题
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务