嵌入式大厂面经第 7(持续更新中!)

这是一个嵌入式大厂面试题专栏,每天更新高频面试题。专栏将包含题目描述、详细解析、相关知识点扩展以及实际代码示例。内容涵盖操作系统、驱动开发、通信协议等核心领域,并结合实际项目经验进行分析。每道题目都会附带面试官可能的追问方向,帮助大家更好地准备面试!

1. 指针常量和常量指针

常量指针(const pointer)

  • 指向内容可以改变,但指针本身不能改变指向
int num1 = 10, num2 = 20;
int* const ptr = &num1;  // 指针常量

*ptr = 30;      // 正确:可以修改指向的值
// ptr = &num2; // 错误:不能修改指针指向

指针常量(pointer to const)

  • 指针可以改变指向,但不能通过指针修改指向的内容
int num1 = 10, num2 = 20;
const int* ptr = &num1;  // 指向常量的指针

ptr = &num2;     // 正确:可以改变指向
// *ptr = 30;    // 错误:不能修改指向的值

2. 栈和堆的区别

栈(Stack)

  1. 特点系统自动管理空间较小存取速度快连续的内存空间
  2. 使用场景
void stackExample(void) {
    int array[5];           // 栈上分配
    char str[10];          // 栈上分配
    struct Point p = {1,2}; // 栈上分配
}  // 函数结束自动释放

堆(Heap)

  1. 特点手动管理空间较大存取速度相对较慢不连续的内存空间
  2. 使用场景
void heapExample(void) {
    int* array = (int*)malloc(5 * sizeof(int));  // 堆上分配
    char* str =

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

嵌入式面试八股文全集 文章被收录于专栏

这是一个全面的嵌入式面试专栏。主要内容将包括:操作系统(进程管理、内存管理、文件系统等)、嵌入式系统(启动流程、驱动开发、中断管理等)、网络通信(TCP/IP协议栈、Socket编程等)、开发工具(交叉编译、调试工具等)以及实际项目经验分享。专栏将采用理论结合实践的方式,每个知识点都会附带相关的面试真题和答案解析。

全部评论
栈用来存储局部变量,堆用来存储动态数据,从三个方面来理解堆和栈的区别,第一,内存方面,栈是自动分配内存,堆是手动分配。第二,大小方面,栈的内存通常娇小,用来存储小数据,堆通常比较大。第三生命周期,栈的生命周期随函数结束而结束,堆有程序员控制
点赞 回复 分享
发布于 04-14 20:41 未知
函数指针是一个指针,其指向的内容是一个函数,而指针函数是一个函数,其返回值是一个指针
点赞 回复 分享
发布于 04-14 20:33 未知
😱😱😱😱😱😱😱😱
点赞 回复 分享
发布于 03-26 10:12 上海
很好
点赞 回复 分享
发布于 03-25 16:03 黑龙江
点赞 回复 分享
发布于 03-25 09:07 山西

相关推荐

点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务