《把指针当成 “遥控器”—— 指向字符串、函数等》
前言如果把内存中的数据比作家电指针就是遥控器。遥控器本身没有画面、没有声音只能指定操控目标指针本身不存储业务数据仅保存目标地址通过*解引用完成对目标数据的操控。一、字符指针操控字符串char *str hello c language;字符串常量存放在只读常量区str 仅仅保存字符串第一个字符的地址。 注意不能通过str[0] a修改字符串常量会造成程序崩溃 如果用字符数组存储字符串内存位于栈区可以随意修改内容。经典指针遍历字符串写法不使用下标纯依靠指针自增遍历是 C 语言标准高效写法。二、二级指针遥控器的遥控器一级指针存放普通变量地址二级指针存放一级指针的地址。 核心用途在函数内部修改外部一级指针的指向常用于动态内存、字符串修改。void modify(char **pp) { *pp new string; }三、函数指针指向一段可执行代码函数名等同于函数入口地址可以用指针接收。 函数指针格式//接收两个int参数返回int类型的函数指针 int (*func)(int a, int b);函数指针实际用途回调函数库函数 qsort 排序依靠函数指针传入自定义比较规则函数指针数组替代大量 if-else、switch 分支简化菜单逻辑C 语言实现简易多态、模块化插件设计。四、void * 万能指针void 指针可以接收任意类型的地址但是不能直接解引用和加减运算必须强制转换为具体类型。 malloc 的返回值就是 void*适配所有数据类型是 C 语言泛型思想的基础。五、总结所有高级指针万变不离其宗只有两个核心操作取地址、解引用*。 字符串操作、回调函数、二级指针修改指向都是数据结构和项目开发中高频用法也是看懂底层源码必备知识。