C 语言是嵌入式与系统编程的通用语言:它贴近硬件、语法精简、可移植性强,几乎所有操作系统内核、编译器和 MCU 固件都由 C 写成。学 C 不只是学语法,更是理解「内存、指针、编译链接」的入口。
一句话定位
C = 一门「小而深」的语言:语法少,但指针与内存模型足够陪你走完整个职业生涯。
知识体系
flowchart TD A[C 语言] --> B[基础语法] A --> C[核心难点] A --> D[模块化] A --> E[工程实践] B --> B1["数据类型与变量"] B --> B2["运算符与表达式"] B --> B3["控制语句: 分支 / 循环"] B --> B4["函数与递归"] C --> C1["指针与地址"] C --> C2["数组与指针的关系"] C --> C3["字符串与字符数组"] C --> C4["结构体 / 联合 / 枚举"] C --> C5["动态内存 malloc / free"] D --> D1["头文件与源文件"] D --> D2["static / extern 作用域"] D --> D3["多文件编译与链接"] E --> E1["预处理器 #define / #include"] E --> E2["位运算与寄存器操作"] E --> E3["调试: GDB / printf"]
章节要点
第一章 初识 C 语言
- 编译流程:预处理 → 编译 → 汇编 → 链接,最终得到可执行文件。
- 第一个程序:
#include <stdio.h>+main函数 +printf。
第二章 C 语言概述
- 程序结构、标识符命名规则、注释、
main的返回值。
第三章 数据和 C
- 基本类型:
int/char/float/double及short/long/unsigned修饰。 - 进制、常量与变量、类型转换(隐式与强制)。
第四章 字符串和格式化输入/输出
printf/scanf的格式说明符;gets/fgets的坑。- 字符串本质是以
\0结尾的字符数组。
第五章 运算符、表达式和语句
- 算术、关系、逻辑、位、三目运算符;自增自减的求值顺序陷阱。
第六章 控制语句:循环
for/while/do-while的适用场景与互转。
第七章 控制语句:分支和跳转
if-else嵌套、switch-case、break/continue/goto。
核心难点:指针
- 指针就是地址:
int *p = &a;,*p取内容,&a取地址。 - 数组名即首元素地址:
arr[i]等价于*(arr + i)。 - 函数传参:C 只有值传递,想修改外部变量就得传指针。
- 动态内存:
malloc配free,配对使用,避免内存泄漏与野指针。
C语言 1000问
- 基础语法指针与未定义行为 —— 声明与定义、整数宽度、signed/unsigned、浮点数、指针、存储类、数组退化和未定义行为。
- 函数存储预处理与文件IO —— 递归、函数指针、static、字符串、宏、条件编译、union、可变参数和文件 I/O。
- 内存模型可移植性与并发 —— 字节序、函数栈帧、内存池、位操作、文件组织、volatile、堆栈与 const 指针。
- 指针数组结构体与位图 —— 指针生命周期、内存错误、二级指针、字符串安全、二维数组、结构体对齐、文件定位和位图。
- 位操作预处理内存分配与AUTOSAR —— 寄存器位操作、位域、可变参数、I/O 缓冲、X-Macro、malloc/free、严格别名和 AUTOSAR BSW C 实战。
- 后续按函数、内存、结构体、预处理器、文件 I/O、多文件组织等主题继续拆分。
flowchart TD A[C语言 1000问] --> B[基础语法与类型] A --> C[指针 / 数组 / 字符串] A --> D[函数 / 内存 / 结构体] A --> E[预处理 / 文件 / 多文件] A --> F[未定义行为与可移植性]
相关
Flomo 迁移补充|1000问
- 未定义行为专题-Q1-Q4:未定义行为、序列点、严格别名、有符号溢出与符号转换。
- 多文件组织Q3-前置声明与头文件依赖:前置声明、头文件依赖与编译效率。
函数、递归与可变参数(新增)
- 函数与递归Q1-函数调用与栈帧:函数调用过程与栈帧结构。
- 函数与递归Q2-递归与迭代:递归、迭代与尾递归优化。
- 函数与递归Q3-函数指针与回调:函数指针、回调、跳转表与 qsort。
- 可变参数Q2-默认实参提升:va_arg 类型规则与默认实参提升。
- 可变参数Q3-参数透传与v系列函数:va_list 透传与 vprintf / vsnprintf。
可变参数与文件 I/O(新增)
- 可变参数Q1-va_list实现可变参数函数:va_list、va_start、va_arg 与 va_end。
- 文件IO-Q1-fopen文本与二进制模式:文本模式与二进制模式差异。
- 文件IO-Q2-标准IO缓冲机制:全缓冲、行缓冲、无缓冲与 fflush。
- 文件IO-Q3-feof正确使用:正确判断文件结束,避免 while(!feof)。
- 文件IO-Q4-文件定位与文本二进制模式:fseek、ftell、rewind 与文件定位。
本轮题库完整性核验(2026-11-01)
- 当前 C语言/1000问 目录共 17 篇 Markdown 答案页。
- 对 17 篇页面逐一检查了标题结构和待补充标记;未发现 TODO、待回答或待完善占位。
- 题目分布包括基础语法/指针/UB、函数与递归、内存模型/并发、位操作/预处理器、可变参数、文件 I/O、多文件组织等。
- 这属于结构性完整性检查,不等于所有代码示例都已在每一种 MCU/编译器/ABI 上实测;涉及未定义行为、字节序、对齐和并发的内容仍应按目标平台验证。