200字
C基础知识
2024-03-17
2026-02-25

C基础知识

内存分区

  1. 内存栈区: 存放局部变量名,自动释放;
  2. 内存堆区: 存放new或者malloc出来的对象,手动释放或系统释放;
  3. 全局区(静态区):data sagment 全局变量和静态变量的存储区域是在一起的,程序结束后由系统释放。
  4. 常量区:常量字符串就是放在这里的。 程序结束后由系统释放
  5. 代码区:二进制代码。

2.程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里。

答:程序的局部变量存在于栈区;全局变量存在于静态区;动态申请数据存在于堆区。

位运算

1. 置 1 操作:使用 | (按位或)

当你需要打开某个外设或设置某个标志位时,使用​按位或

  • 公式: Register |= (1 << n); // 将第 n 位设为 1
  • 原理: 1 | 0 = 1​, 1 | 1 = 1。任何位与 1 执行“或”操作都会变成 1,而与 0 执行“或”操作保持不变。

2. 清 0 操作:使用 &​ (按位与) 和 ~ (按位取反)

当你需要关闭某个功能时,使用这个组合。

  • 公式: Register &= ~(1 << n); // 将第 n 位清零
  • 原理: ~(1 << n)​ 会产生一个只有第 n 位是 0、其他全为 1 的掩码。再进行 & 运算,0 对应的位强制变 0,1 对应的位保持现状。

3. 取反/翻转操作:使用 ^ (按位异或)

常用于控制 LED 灯闪烁。

  • 公式: Register ^= (1 << n); // 状态翻转(0变1,1变0)
  • 原理: 1 ^ 1 = 0​, 0 ^ 1 = 1。同一个位异或 1,结果就会反转。

4. 判断位状态:使用 & (按位与)

检查某个按键是否按下或某个状态位是否置起。

  • 代码: if (Register & (1 << n)) // 如果第 n 位是 1,则条件成立
  • 原理: 如果第 n 位是 1,结果就是 2^n(非 0,逻辑真);如果第 n 位是 0,结果就是 0(逻辑假)。

评论