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

1. include <> 和 include "" 的区别

搜索路径不同

  • <>: 只在标准库目录搜索
  • "": 先在当前目录搜索,未找到再搜索标准库目录

使用场景

// 系统标准头文件
#include <stdio.h>
#include <stdlib.h>

// 自定义头文件
#include "myheader.h"
#include "config.h"


2. 全局变量和局部变量的区别

主要区别

  1. 作用域全局变量:整个程序局部变量:声明它的函数或代码块内
  2. 生命周期全局变量:程序运行期间一直存在局部变量:函数或代码块执行期间
  3. 存储位置全局变量:数据段局部变量:栈区

示例代码:

int globalVar = 10;  // 全局变量

void function1(void) {
    int localVar = 20;  // 局部变量
    printf("Local: %d, Global: %d\n", localVar, globalVar);
}

void function2(void) {
    int localVar = 30;  // 不同的局部变量
    globalVar = 40;     // 可以修改全局变量
    printf("Local: %d, Global: %d\n", localVar, globalVar);
}


3. #define 和 typedef 的区别

主要区别

  1. 处理时机#define:预处理阶段的文本替换typedef:编译阶段的类型定义
  2. 作用范围#define:可以定义常量、表达式、函数等typedef:只能定义类型别名
  3. 编译检查#define:简单的文本替换,不做类型检查typedef:会进行类型检查

示例代码:

// #define 示例
#define MAX_SIZE 100
#define SQUARE(x) ((x) * (x))
#define PTR_INT int*

// typedef 示例
typedef unsigned long ulong;
typedef struct Point {
    int x;
    int y;
} Point;
typedef int* IntPtr;

void testDefineTypedef(void) {
    // #define 使用
    int array[MAX_SIZE];
    int result = SQUARE(5);
    PTR_INT p1, p2;  // p1是指针,p2是int
    
    // typedef 使用
    ulong value = 1000UL;
    Point pt = {1, 2};
    IntPtr p3, p4;  // p3和p4都是指针
}


使用建议

  1. 对于常量定义,使用 #define
  2. 对于复杂类型定义,使用 typedef
  3. 对于函数指针等复杂声明,typedef 更清晰
  4. #define 用于条件编译和宏定义

这些概念在C语言中都非常基础和重要,正确理解和使用它们可以帮助我们写出更好的代码。

更多内容全在下方专栏

全网最受欢迎的嵌入式笔试专栏

笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学

3000+订阅还会涨价,提前订阅提前享受,持续更新中。

专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

#满分简历要如何准备?##嵌入式笔面经分享#
全部评论

相关推荐

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

创作者周榜

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