单链表使用里面为什么是二级指针

这里很多人就会疑问,为什么顺序表里面是一级指针,单链表里面是二级指针。

这里我们专门列出来进行讲解。

因为传递的不是二级指针的话,会导致传参之后,形参改变,实参不改变

你希望形参改变实参也改变就必须传递地址

简单的解释就是

1,我们申请开辟了一个空间,此时这个空间需要用指针指向这个空间

2,然后我们需要调用这个空间进行增删减改的时候

3,如果我们直接传递指针过去的话,也就是会传递形参,也就是传值调用,然后我们的编译器会拷贝一份数值,在新开辟的空间计算完毕之后,返回你需要的数值。

4,但是此时只是形参的数值完成了改变,也就是*phead的数值计算完成,因为是形参。

5,我们需要的是newnode的空间的数值完成计算,那么此时我们需要传递指针的地址,也就是传递指针指向空间的地址,也就是指针的地址。

6.此时也就来到了我们图解的**phead,所以需要对指针进行取地址,

7,此时我们对实参进行取地址了,也就是指针的取地址,那么形参我们接收的话是不是需要用二级指针。

8,所以就产生了二级指针

9,最后我们可以发现,申请空间的时候和打印的时候,是不需要二级指针的,为什么,很简单,我们申请的空间,本身是不涉及指针的,只有申请结束,我们需要用指针指向这个节点,形成逻辑的线性表。

10,在打印的时候,我们需要的是不需要改变数值,所以传递形参(也就是一级指针),指向链表的指针。

11,所以这里也解释了为什么有时候需要二级指针,有时候需要一级指针,不需要改变数值的时候我们只需要一级指针,传参就可以了,需要改变数值的时候,我们需要取出指针的地址,我们需要的是形参的改变影响实参。

12,要是不知道什么是形参什么是实参的小伙伴可以看一下函数的知识。

    printf("测试2:\n");SLTNode* s1 = NULL;//尾插// 首先链表需要指针指向链表// 我们传递是时候是需要形参变化实参也发生变化的// 那么如果只是传递一个指针的情况下,这里实际你传递的是指针的数值,也就会导致形参变化实参不变化// 但是我们需要的是形参变化实参也变化,所以此时我们需要传递指针的地址,也就是&s1,并且用二级指针进行接收// 取的是指针指向的空间的地址,因为只是传参传递的是s1的情况下,printf("\n尾插\n");SLTPushBack(&s1, 11);SLTPushBack(&s1, 22);SLTPushBack(&s1, 33);SLTPrint(s1);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习javaEE的日子 Day36 字符流

Day36 1.字符流 应用场景:操作纯文本数据 注意:字符流 字节流编译器 编译器:可以识别中文字符和非中文字符,非中文字符获取1个字节(一个字节一个字符),编译器会根据编码格式获取中文字符对应的…

企业数智化产品如何设计?

企业数智化,是基于新一代数字与智能技术的各类云服务,通过网络协同、数据智能、连接资源、重组流程、赋能组织,处理交易,执行作业,融入数字经济,推进企业业务创新(研发、生产、营销、服务等&…

媒体邀约采访的分类?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体邀约采访可以根据不同的标准进行分类。以下是一些常见的分类方式: 1. 按照邀约形式: - 电话邀约:通过电话与媒体联系,说明采访或报道…

Gartner 《2024安全和风险管理技术路线图》:高价值技术 DSP 进入广泛部署阶段

近期,Gartner 发布《2024年技术采用路线图:安全与风险管理》(以下简称:《路线图》),该信息图表识别了全球企业正在采用的 44 种与安全相关的技术,并根据采用阶段、部署风险和企业价值进行了映射…

Web 前端 Javascript笔记2

1、数组 为什么需要数组:因为变量只能存储一条数据,但是储存多条数据 数组的声明方式 1、new let a1new Array() console.log(a1) 2、字面量 let a2[1,2,4,"k",true,"zhangsan",11] console.log(a2) 数组里面可以存放不同的数据类…

深入理解go语言中的切片

写在文章开头 从一个Java的开发角度来看,切片我们可以理解为Java中的ArrayList即一种动态数组的实现,本文会从源码的角度对切片进行深入剖析,希望对你有帮助。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java …

Transformer架构实现一

从0-1搭建Transformer架构 架构图 本文主要讲解 1)输入层的词嵌入 2)输入层的位置编码 3)编码层的多头注意力机制 4)编码层的前馈全连接 1)输入层的词嵌入 class Embeddings(nn.Module):"""构建emb…

a == 1 a== 2 a== 3 返回 true ?

1. 前言 下面这道题是 阿里、百度、腾讯 三个大厂都出过的面试题,一个前端同事跳槽面试也被问了这道题 // ? 位置应该怎么写,才能输出 trueconst a ?console.log(a 1 && a 2 && a 3) 看了大厂的面试题会对面试官的精神…

git操作基本命令

Git命令操作: 1、服务器上面有新的修改,pull出现错误操作如下 git stash git pull origin master git stash pop 2、删除本地一个文件test.py,想重新download远程服务器最新的文件 #git checkout test.py 3、查看当前处于哪一个分支 #git …

数码相框-显示JPG图片

LCD控制器会将LCD上的屏幕数据映射在相应的显存位置上。 通过libjpeg把jpg图片解压出来RGB原始数据。 libjpeg是使用c语言实现的读写jpeg文件的库。 使用libjpeg的应用程序是以"scanline"为单位进行图像处理的。 libjpeg解压图片的步骤: libjpeg的使…

【御控物联】物联网平台设备接入-JSON数据格式转化(场景案例四)

文章目录 一、背景二、解决方案三、在线转换工具四、技术资料 一、背景 物联网平台是一种实现设备接入、设备监控、设备管理、数据存储、消息多源转发和数据分析等能力的一体化平台。南向支持连接海量异构(协议多样)设备,实现设备数据云端存…

前端开发攻略---在输入框中输入中文但是还没选中的时候,搜索事件依然存在;中文输入法导致的高频事件。

1、演示 解决前 解决后 2、输入框事件介绍 compositionstart事件在用户开始使用输入法输入时触发。这意味着用户正在进行组合输入,比如在中文输入法中,用户可能正在输入一个多个字符的词语。在这个阶段,输入框的内容可能还没有完全确定&#…

RocketMQ 10 面试题FAQ

RocketMQ 面试FAQ 说说你们公司线上生产环境用的是什么消息中间件? 为什么要使用MQ? 因为项目比较大,做了分布式系统,所有远程服务调用请求都是同步执行经常出问题,所以引入了mq 解耦 系统耦合度降低,没有强依赖…

Testng测试框架(2)-测试用例@Test

测试方法用 Test 进行注释,将类或方法标记为测试的一部分。 Test() public void aFastTest() {System.out.println("Fast test"); }import org.testng.annotations.Test;public class TestExample {Test(description "测试用例1")public void…

如何通过Python向PDF添加文本水印_python给pdf文件加文字水印

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

频率传感器信号采集隔离转换模拟信号0-1KHz/0-5KHz/0-10KH转0-2.5V/0-5V/0-10V/0-10mA/0-20mA/4-20mA

主要特性: >> 精度等级&#xff1a;0.2 级 >> 全量程内极高的线性度&#xff08;非线性度<0.1%&#xff09; >> 辅助电源/信号输入/信号输出&#xff1a; 2500VDC 三隔离 >> 辅助电源&#xff1a;5VDC&#xff0c;12VDC&#xff0c;24VDC 等单…

Redis Desktop Manager 中文--强大的Redis数据库管理工具

Redis Desktop Manager&#xff08;简称RDM&#xff09;是一款开源且功能强大的图形化Redis管理工具。它支持Windows、macOS和Linux等多平台&#xff0c;为Redis数据库提供了直观友好的管理界面。通过RDM&#xff0c;用户可以轻松连接多个Redis服务器&#xff0c;管理连接信息&…

【自媒体创作利器】AI白日梦+ChatGPT 三分钟生成爆款短视频

AI白日梦https://brmgo.com/signup?codey5no6idev 引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;AI在各个领域都展现出了强大的应用潜力。其中&#xff0c;自然语言处理技术的进步使得智能对话系统得以实现&#xff0c;而ChatGPT作为其中的代表之一…

MyBatis操作数据库(3)

其它查询操作 #{}和${} MyBatis参数赋值有两种方式, 咱们前面使用了#{}进行赋值, 接下来来看两者的区别: #{}和${}的使用 1.先看Integer类型的参数: Select("select username, password, age, gender, phone from userinfo where id #{id}") UserInfo queryByI…

攻防世界---easyRE1

1.下载附件&#xff0c;打开后有两个文件 2.对32查壳 3.对64查壳 4.IDA分析&#xff0c;这里打开之后找到main函数点击main函数后按f5 5.看到了flag----拿去提交发现是对的&#xff0c;这道题是逆向中最简单的一道了 flag{db2f62a36a018bce28e46d976e3f9864}