嵌入式大厂面经 5(持续更新中!)
1. include <> 和 include "" 的区别
搜索路径不同
<>
: 只在标准库目录搜索""
: 先在当前目录搜索,未找到再搜索标准库目录
使用场景
// 系统标准头文件 #include <stdio.h> #include <stdlib.h> // 自定义头文件 #include "myheader.h" #include "config.h"
2. 全局变量和局部变量的区别
主要区别
- 作用域全局变量:整个程序局部变量:声明它的函数或代码块内
- 生命周期全局变量:程序运行期间一直存在局部变量:函数或代码块执行期间
- 存储位置全局变量:数据段局部变量:栈区
示例代码:
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 的区别
主要区别
- 处理时机#define:预处理阶段的文本替换typedef:编译阶段的类型定义
- 作用范围#define:可以定义常量、表达式、函数等typedef:只能定义类型别名
- 编译检查#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都是指针 }
使用建议
- 对于常量定义,使用 #define
- 对于复杂类型定义,使用 typedef
- 对于函数指针等复杂声明,typedef 更清晰
- #define 用于条件编译和宏定义
这些概念在C语言中都非常基础和重要,正确理解和使用它们可以帮助我们写出更好的代码。
更多内容全在下方专栏
全网最受欢迎的嵌入式笔试专栏
笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学
3000+订阅还会涨价,提前订阅提前享受,持续更新中。
专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
#满分简历要如何准备?##嵌入式笔面经分享#