c语言和单片机中的一些常考概念

📅 发布时间:2026/10/19 1:35:49
c语言和单片机中的一些常考概念
C 语言核心概念速记大全面试 科创必备一、数据类型与取值范围char占1 字节8 位signed char-128 ~ 127unsigned char0 ~ 255short占 2 字节范围-32768 ~ 32767unsigned short0 ~ 65535int通常 4 字节范围-2¹⁴⁷⁴⁸³⁶⁴⁸ ~ 2¹⁴⁷⁴⁸³⁶⁴⁷unsigned int0 ~ 4294967295有符号数最高位是符号位0 正 1 负无符号数没有符号位全部表示数值负数在计算机中以补码存储二、变量存储区域必考局部变量→ 栈区stack栈区特点自动分配、自动释放、空间小、速度快全局变量 /static 变量→ 全局 / 静态区全局区特点程序运行全程存在默认初始化为 0malloc / calloc / realloc申请 →堆区heap堆区特点手动申请、手动释放、空间大、速度慢字符串常量、const 常量 →常量区只读函数、代码指令 →代码区三、static 关键字三大作用修饰局部变量延长生命周期函数退出不销毁修饰全局变量作用域限制在当前文件修饰函数函数只能在当前文件被调用四、const 关键字const int aa 不可修改const int *p指针指向的内容不可改int *const p指针本身地址不可改const int *const p内容和地址都不能改五、#define 与 typedef#define是宏替换编译前简单文本替换typedef是类型别名有类型检查例typedef unsigned char u8;常用在单片机六、数组与指针数组名大多数情况等于首元素地址a[i]等价于*(ai)指针大小32 位系统 4 字节64 位系统 8 字节指针类型决定1 跳多少字节野指针指向无效内存的指针极其危险空指针NULL值为 0七、函数相关函数形参是拷贝不会改变实参想在函数内修改变量 → 必须传指针递归必须有结束条件否则栈溢出内联函数inline减少函数调用开销八、运算符与表达式i先用后加i先加后用逻辑与左边假右边不执行短路||逻辑或左边真右边不执行位运算按位与|按位或^按位异或~按位取反左移等价乘 2右移等价除 2异或特性a ^ a 0a ^ 0 a九、预处理指令#include头文件包含#define宏定义#ifdef / #ifndef / #endif条件编译#pragma once防止头文件重复包含十、结构体、枚举、共用体结构体struct不同类型打包在一起结构体大小遵循内存对齐枚举enum限制取值范围默认从 0 开始共用体union所有成员共用同一段内存十一、字符串C 语言字符串以\0结尾abc实际占 4 字节a b c \0strlen不计\0sizeof计算总长度包含\0常用函数strlen / strcpy / strcat / strcmp十二、文件操作文件指针FILE *fp打开模式r读 /w写 /a追加fopen / fclose / fread / fwrite / fprintf / fscanf十三、单片机 C 特别重点51 单片机 int 通常是2 字节51 栈极小局部变量不能太多51 编译器多为 C89变量必须放函数开头sfr定义特殊功能寄存器sbit定义位变量如 P1^0code关键字把数据存在 Flash不占 RAMidata / xdata / pdata51 不同 RAM 区域中断函数用interrupt关键字全局变量多是为了省栈、方便跨函数使用for(int i0;…)在 Keil C51 中不支持十四、常见面试小问题全局变量默认初始值0局部变量默认随机值垃圾值指针越界、数组越界 → 程序崩溃 / 乱码内存泄漏malloc未free野指针产生指针释放后未置 NULL