☰
c语言和单片机中的一些常考概念
2026/10/19 1:35:46 网站建设 项目流程

C 语言核心概念速记大全(面试 & 科创必备)

一、数据类型与取值范围

  1. char占1 字节(8 位)
  2. signed char:-128 ~ 127
  3. unsigned char:0 ~ 255
  4. short占 2 字节,范围:-32768 ~ 32767
  5. unsigned short:0 ~ 65535
  6. int通常 4 字节,范围:-2¹⁴⁷⁴⁸³⁶⁴⁸ ~ 2¹⁴⁷⁴⁸³⁶⁴⁷
  7. unsigned int:0 ~ 4294967295
  8. 有符号数最高位是符号位,0 正 1 负
  9. 无符号数没有符号位,全部表示数值
  10. 负数在计算机中以补码存储

二、变量存储区域(必考)

  1. 局部变量→ 栈区(stack)
  2. 栈区特点:自动分配、自动释放、空间小、速度快
  3. 全局变量 /static 变量→ 全局 / 静态区
  4. 全局区特点:程序运行全程存在,默认初始化为 0
  5. malloc / calloc / realloc申请 →堆区(heap)
  6. 堆区特点:手动申请、手动释放、空间大、速度慢
  7. 字符串常量、const 常量 →常量区(只读)
  8. 函数、代码指令 →代码区

三、static 关键字(三大作用)

  1. 修饰局部变量:延长生命周期,函数退出不销毁
  2. 修饰全局变量:作用域限制在当前文件
  3. 修饰函数:函数只能在当前文件被调用

四、const 关键字

  1. const int a:a 不可修改
  2. const int *p:指针指向的内容不可改
  3. int *const p:指针本身地址不可改
  4. const int *const p:内容和地址都不能改

五、#define 与 typedef

  1. #define是宏替换,编译前简单文本替换
  2. typedef是类型别名,有类型检查
  3. 例:typedef unsigned char u8;常用在单片机

六、数组与指针

  1. 数组名大多数情况等于首元素地址
  2. a[i]等价于*(a+i)
  3. 指针大小:32 位系统 4 字节,64 位系统 8 字节
  4. 指针类型决定:+1 跳多少字节
  5. 野指针:指向无效内存的指针,极其危险
  6. 空指针:NULL,值为 0

七、函数相关

  1. 函数形参是拷贝,不会改变实参
  2. 想在函数内修改变量 → 必须传指针
  3. 递归必须有结束条件,否则栈溢出
  4. 内联函数inline:减少函数调用开销

八、运算符与表达式

  1. i++:先用后加
  2. ++i:先加后用
  3. &&逻辑与:左边假,右边不执行(短路)
  4. ||逻辑或:左边真,右边不执行
  5. 位运算:
    • &按位与
    • |按位或
    • ^按位异或
    • ~按位取反
    • <<左移(等价乘 2)
    • >>右移(等价除 2)
  6. 异或特性:a ^ a = 0,a ^ 0 = a

九、预处理指令

  1. #include:头文件包含
  2. #define:宏定义
  3. #ifdef / #ifndef / #endif:条件编译
  4. #pragma once:防止头文件重复包含

十、结构体、枚举、共用体

  1. 结构体struct:不同类型打包在一起
  2. 结构体大小遵循内存对齐
  3. 枚举enum:限制取值范围,默认从 0 开始
  4. 共用体union:所有成员共用同一段内存

十一、字符串

  1. C 语言字符串以\0结尾
  2. "abc"实际占 4 字节:a b c \0
  3. strlen不计\0
  4. sizeof计算总长度,包含\0
  5. 常用函数:strlen / strcpy / strcat / strcmp

十二、文件操作

  1. 文件指针FILE *fp
  2. 打开模式:r读 /w写 /a追加
  3. fopen / fclose / fread / fwrite / fprintf / fscanf

十三、单片机 C 特别重点

  1. 51 单片机 int 通常是2 字节
  2. 51 栈极小,局部变量不能太多
  3. 51 编译器多为 C89,变量必须放函数开头
  4. sfr定义特殊功能寄存器
  5. sbit定义位变量(如 P1^0)
  6. code关键字:把数据存在 Flash,不占 RAM
  7. idata / xdata / pdata:51 不同 RAM 区域
  8. 中断函数用interrupt关键字
  9. 全局变量多是为了省栈、方便跨函数使用
  10. for(int i=0;…)在 Keil C51 中不支持

十四、常见面试小问题

  1. 全局变量默认初始值:0
  2. 局部变量默认:随机值(垃圾值)
  3. 指针越界、数组越界 → 程序崩溃 / 乱码
  4. 内存泄漏:malloc未free
  5. 野指针产生:指针释放后未置 NULL

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询