news 2026/9/9 12:15:00

多级指针存在的意义

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多级指针存在的意义

就以二级指针来说吧。其他多级指针也是类似。
二级指针的定义比较明确,就是指向指针的指针,或者说一级指针变量的地址。
那么,二级指针存在的意义是什么呢? 或者说,为什么需要二级指针呢?
一句话解释:函数调用者想让该函数来改变调用者这里的一级指针。

先以一级指针存在的意义作为铺垫来解释:
假设A函数调用B函数, A希望自己的一个int型变量在B中被改变,于是它把这个变量当作参数传给B;可是,不能传值啊,那样B无法改变A中的int变量。怎么办?自然是传指针或引用。(引用不讨论。还有另一种办法是作为返回值返回,本文后有提及。)
这样看二级指针的存在原因或意义就很清楚了。当你在某个函数的参数中看到一个二级指针时,就应该明白:哦,这是该函数的调用者那里有一个一级指针变量,它预期这个一级指针变量在当前函数中被改变。

道理说清楚了也就没什么了。那么,实际中有什么栗子呢?
教科书上关于链表的函数(比如,在链表中插入一个节点或删除一个节点),一般似乎最后都是返回一个一级指针,代表返回的是这个链表的头节点的指针。但是,假如要求返回类型是void型,该怎么办呢?那当然就是把链表头指针的地址传给功能函数。而在功能函数中,若新增一个节点且这个节点刚好应该作为头节点,或者刚好删除的就是头节点时,则需要改变功能函数调用者那里的头指针变量Node * head的值了。此时就可以通过修改二级指针所指进行修改。以单链表新增节点恰好应为头节点为例,传进功能函数的参数是Node ** pphead, 新new或malloc出来的变量的指针是Node * tmp, 则会有tmp->next = *pphead;*pphead = tmp;的操作了;这样,调用者那里的Node * head的值就被改变为和Node * tmp一样了。

总之,记住上面黑体字部分的二级指针存在的意义,会对理解二级指针相关的程序有很大的帮助了。
(完)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 12:14:36

LVGL图片转C数组全攻略:从原理到工程落地的完整指南

简介:这份资源是面向嵌入式开发者的 LVGL 图片转化工具,可将 PNG、BMP 等图像文件直接转换为 C 语言数组,帮助基于 LVGL 图形库的 MCU 项目在有限内存下高效加载并显示图片,省去运行时解码开销,适合从事 GUI 开发、低资…

作者头像 李华
网站建设 2026/9/9 12:14:35

JDK 17反射异常InaccessibleObjectException详解与解决方案

最近把一个服务从JDK 8直接升到JDK 17,启动第一分钟就被java.lang.reflect.InaccessibleObjectException拍脸。我猜你现在搜到这,十有八九也是被这一串异常信息折腾得够呛。这篇就把这个异常彻底讲透:它为什么会冒出来、怎么从堆栈里快速定位…

作者头像 李华
网站建设 2026/9/9 12:12:50

LangChain入门指南:核心组件、LCEL、RAG与Agent实战

1. LangChain入门,先搞懂它到底在解决什么问题1.1 没有LangChain的时候,我们是怎么写代码的先聊点实在的。你在接触LangChain之前,肯定写过一段直接调大模型接口的代码,大概长这样:import openaiopenai.api_key "…

作者头像 李华
网站建设 2026/9/9 12:12:20

夜视机芯SDK跨平台集成实战:Android与Linux双平台对接全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/9 12:11:19

Swift开发IDE怎么选?从Xcode到VS Code的工具链解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/9 12:11:16

闲置电动车变现:共享租赁系统多场景适配与运营指南

共享电动车租赁系统:多场景适配,让闲置电动车也能“跑”起来赚钱 我一直觉得,电动车是很多家庭最被低估的闲置资产。楼下停车棚里那台落灰的踏板车,电池亏到充不进电,轮胎慢撒气,扔了可惜,卖二…

作者头像 李华