《把指针当成 “遥控器”—— 指向字符串、函数等》
2026/7/2 1:38:38 网站建设 项目流程

前言

如果把内存中的数据比作家电,指针就是遥控器。遥控器本身没有画面、没有声音,只能指定操控目标;指针本身不存储业务数据,仅保存目标地址,通过*解引用完成对目标数据的操控。

一、字符指针:操控字符串

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);

函数指针实际用途

  1. 回调函数:库函数 qsort 排序,依靠函数指针传入自定义比较规则;
  2. 函数指针数组:替代大量 if-else、switch 分支,简化菜单逻辑;
  3. C 语言实现简易多态、模块化插件设计。

四、void * 万能指针

void 指针可以接收任意类型的地址,但是不能直接解引用和加减运算,必须强制转换为具体类型。 malloc 的返回值就是 void*,适配所有数据类型,是 C 语言泛型思想的基础。

五、总结

所有高级指针万变不离其宗,只有两个核心操作:取地址&、解引用*。 字符串操作、回调函数、二级指针修改指向,都是数据结构和项目开发中高频用法,也是看懂底层源码必备知识。

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

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

立即咨询