01
指针基础
内存地址的概念 · 指针的定义与初始化 · 取地址符&与解引用符* · 指针的大小
入门核心
02
指针与基本数据类型
指向整型/字符型/浮点型的指针 · void* 指针 · NULL指针与野指针
基础void*
03
指针的运算
算术运算 ++ -- + - · 指针比较 · 指针与数组名的关系
运算数组
04
指针与一维数组
数组名作为指针常量 · 通过指针遍历数组 · 指针数组与数组指针的区别
数组指针
05
指针与多维数组
二维数组内存布局 · 行指针与列指针 · 通过指针访问二维数组元素
进阶二维
06
指针与函数
指针作为函数参数(传址调用) · 指针作为函数返回值 · 函数指针的定义与使用
函数回调
07
指针与字符串
字符串常量与字符指针 · 字符串指针数组 · 常用字符串操作函数的指针实现
字符串操作
08
动态内存分配
malloc, calloc, realloc, free 详解 · 内存分配失败的处理
内存malloc
09
堆与栈
程序内存分区(栈/堆/全局/常量/代码) · 栈帧概念 · 堆内存生命周期
内存布局栈帧
10
内存泄漏
定义与危害 · 常见泄漏场景 · 使用 Valgrind 检测泄漏
调试Valgrind
11
悬空指针与野指针
悬空指针产生原因 · 野指针危害 · 如何避免
危险防御
12
const 与指针
const int *, int * const, const int * const 区别与应用
const只读
13
二级指针
二级指针定义 · 二级指针与指针数组 · 作为函数参数
二级指针
14
指针与结构体
结构体指针 · -> 运算符 · 结构体中的指针成员 · 链表节点定义
结构体链表
15
函数指针进阶
函数指针数组 · 回调函数机制 · 函数指针作为结构体成员
回调进阶
16
复杂指针声明解析
右左法则 · 函数指针与数组指针复杂组合 · typedef 简化
复杂声明
17
动态数组
malloc 实现动态一维数组 · 动态二维数组三种实现方式
动态二维
18
链表基础
单向链表定义 · 创建节点 · 遍历 · 插入 · 删除
链表基础
19
链表进阶
双向链表 · 循环链表 · 链表的反转操作
双向反转
20
栈与队列的指针实现
基于动态数组的栈 · 基于链表的队列
栈队列
21
内存对齐
结构体对齐规则 · pragma pack · 对齐对性能的影响
对齐性能
22
柔性数组
C99 柔性数组定义 · 与指针区别 · 应用场景
C99灵活
23
内存池
内存池概念 · 简单固定大小内存池实现 · 优势
内存池优化
24
智能指针模拟
C语言模拟引用计数 · RAII 思想在C中的实现
RAII模拟
25
指针与文件操作
FILE 指针 · 文件读写缓冲区 · 二进制/文本文件的指针操作
文件IO
26
volatile 与指针
volatile 关键字作用 · volatile 指针使用场景(硬件寄存器/多线程)
volatile硬件
27
指针与多线程
线程间共享内存指针问题 · 原子操作与内存屏障简介
多线程原子
28
常见指针错误调试
段错误的定位 · 使用 GDB 调试指针问题 · 打印指针值
GDB调试
29
C语言内存管理最佳实践
编码规范 · 防御性编程 · 代码审查清单
规范最佳
30
综合实战:简易 JSON 解析器
涉及指针、动态内存、链表、回调函数 · 完整项目
实战JSON