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

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

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

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

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

简单的解释就是

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.rhkb.cn/news/311016.html

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

相关文章

构建鸿蒙ACE静态库

搭建开发环境 根据说明文档下载鸿蒙全部代码,一般采取第四种方式获取最新代码(请保证代码为最新) 源码获取Windows下载编译环境 MinGW GCC 7.3.0版本 请添加环境变量IDE 可以使用两种 CLion和Qt,CLion不带有环境需要安装MinGW才可以开发,Qt自带MinGW环境&#xff0…

Springboot+Vue项目-基于Java+MySQL的校园周边美食探索及分享平台系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

html球体涨水

简单 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>div…

在比特币中,1 sat 是多少美元?

普通人绝对想不到&#xff0c;比特币能在2024年达到这个价值&#xff0c;早知道的话&#xff0c;我当初就是破釜沉舟也得买一个啊。 而在4月19号&#xff0c;也将迎来比特币再次减半。减半并不是说玩家手中的比特币要被突然减去一半&#xff0c;而是在后续的挖矿过程中&#xf…

CSS基础之伪元素选择器(如果想知道CSS的伪元素选择器知识点,那么只看这一篇就足够了!)

前言&#xff1a;我们已经知道了在CSS中&#xff0c;选择器有基本选择器、复合选择器、伪类选择器、那么选择器学习完了吗&#xff1f;显然是没有的&#xff0c;这篇文章讲解最后一种选择器——伪元素选择器。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我…

移动端web适配方案

以下是移动端适配的多个方案&#xff0c;也可以说说你是怎么做的。 正文 自适应&#xff1a;根据不同的设备屏幕大小来自动调整尺寸、大小 响应式&#xff1a;会随着屏幕的实时变动而自动调整&#xff0c;是一种更强的自适应 为什么要做移动端适配&#xff1f; 目前市面上…

2024很漂亮的个人主页HTML源码

源码介绍 很漂亮的个人主页HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 截图效果 源码下载 很漂亮的个人主页HTML源码

第七讲:C语言指针(1)

目录 1、内存和地址 1.1、内存 1.2、究竟该如何理解编址 2、指针变量和地址 2.1、取地址操作符&#xff08;&&#xff09; 2.2、指针变量和解引⽤操作符 2.2.1、指针变量 2.2.2、如何理解指针类型 2.2.3、解引⽤操作符 2.3、指针变量的⼤⼩ 3、指针变量类型的意…

Input DropDown 拼接成 select组件(基于antd和react)

前言&#xff1a;为什么不直接用select&#xff0c;还要舍近求远搞inputdropdown这种缝合怪&#xff0c;是因为antd的select不支持选中项再编辑&#xff0c;效果如图 比如&#xff1a;选中的lucy文案变成了placeholder不能再编辑了 封装此组件虽然比较简单&#xff0c;但还是有…

基于SSM的购物小程序01

4.1系统架构设计 购物系统设计的系统项目的概述设计分析&#xff0c;主要内容有学习平台的具体分析&#xff0c;进行数据库的是设计&#xff0c;数据采用mysql数据库&#xff0c;并且对于系统的设计采用比较人性化的操作设计&#xff0c;对于系统出现的错误信息可以及时做出处…

在Vue3中如何使用H.265视频流媒体播放器EasyPlayer.js?

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;可支持H.264与H.265编码格式&#xff0c;性能稳定、播放流畅&#xff0c;能支持WebSocket-FLV、HTTP-FLV&#xff0c;HLS&#xff08;m3u8&#…

E9:拦截流程系统管理员操作记录,流转记录不显示(ECODE)

效果&#xff1a; ecodeSDK.rewriteApiDataQueueSet({fn: (url, params, data) > {const { hash } window.location;if (!hash.startsWith(#/main/workflow/req)) return false; // 判断页面地址if (!ecCom.WeaTools.Base64) return false; // 完整组件库加载完成if (!W…

r3live 使用前提 雷达-相机外参标定 livox_camera_lidar_calibration

标定的是相机到雷达的,R3live下面配置的雷达到相机的,所以要把得到外参旋转矩阵求逆,再填入,平移矩阵则取负 港科大livox_camera_calib虽然操作方便&#xff0c;但是使用mid360雷达会有视角问题&#xff08;投影三维点到相机&#xff09;&#xff0c;尝试了很多场景&#xff0c…

js纯前端实现语音播报,朗读功能(2024-04-15)

实现语音播报要有两个原生API 分别是【window.speechSynthesis】【SpeechSynthesisUtterance】 项目代码 // 执行函数 initVoice({text: 项目介绍,vol: 1,rate: 1 })// 函数 export function initVoice(config) {window.speechSynthesis.cancel();//播报前建议调用取消的函数…

在PostGIS中计算点数据集的最小外包凸多边形等

存在点&#xff08;或线&#xff09;数据集&#xff0c;其分布情况如下&#xff1a; 现在想要获取该数据的几个外包多边形&#xff0c;主要包含如下三个方法&#xff1a; 第一种方法&#xff0c;最小外包凸多边形&#xff0c;其结果如下&#xff1a; 查询语句&#xff1a;ST…

半导体材料(二)——半导体导电特性

本篇为西安交通大学本科课程《电气材料基础》的笔记。 本篇为这一单元的第二篇笔记&#xff0c;上一篇传送门。 半导体导电特性 载流子的迁移 外电场下电子和空穴定向位移产生电流。电流密度可写作&#xff1a; J e ( μ n n μ p p ) E σ E Je(\mu_n n\mu_p p)E\sigm…

称重传感器信号变送 差分信号输入转换直流放大器0-10mV/0-20mV/0-±10mV/0-±20mV转0-5V/0-10V/4-20mA

概述&#xff1a; DIN11 IPO 压力应变桥信号处理系列隔离放大器是一种将差分输入信号隔离放大、转换成按比例输出的直流信号导轨安装变送模块。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等行业。此系列模块内部嵌入了一个高效微功率的电源&#xff0c;向输…

vscode远程免密登录ssh

vscode远程免密登录ssh 1. 安装vscode2. 安装ssh3. 本地vscode配置免密登录远端开发机1. 本地配置秘钥2. 远程开发机配置秘钥 4. vscode常用小工具1. vscode怎么设置ctrl加滚轮放大字体 1. 安装vscode 2. 安装ssh 设置符号打开config配置文件&#xff0c;点击符号ssh连接新的远…

【MVCC】深入浅出彻底理解MVCC

MVCC概述 MVCC&#xff08;Multi-Version Concurrency Control&#xff09;即多版本并发控制。主要是为了提高数据库的并发性能而提供的&#xff0c;采用了不加锁的方式处理读-写并发冲突&#xff0c;确保了任何时刻的读操作都是非阻塞的。只需要很小的开销&#xff0c;就可以…

03-echarts如何画立体柱状图

echarts如何画立体柱状图 一、创建盒子1、创建盒子2、初始化盒子&#xff08;先绘制一个基本的二维柱状图的样式&#xff09;1、创建一个初始化图表的方法2、在mounted中调用这个方法3、在方法中写options和绘制图形 二、画图前知识1、坐标2、柱状图图解分析 三、构建方法1、创…