关于在Reverse函数中不能使用L=s而是*L=*s的原因分析

ops/2024/11/17 21:25:37/

完整代码地址:
https://blog.csdn.net/2301_76819732/article/details/143807340?spm=1001.2014.3001.5502

如果使用L=s; 的话,当输出结果时,会发现内容为空。

我感到很奇怪,按照我的设想,L=s;会把s指向的地址赋给L。

但现在这个情况肯定是失败的了。

我随便试了一试,发现如果是换成*L=*s;是成功的,这很奇怪,因为在我看来使用*一般是值传递;于是我使用test()函数来显示Ls中的各个地址。

发现除了头节点不一样之外,其他的结点地址都是一样的,为什么会这样嘞?

我查了一些资料之后发现,如果是使用L=s;的话,其实是将形参中的L指向了s形参L原本保存的是实参是的地址,在这之后变成了s保存的地址。这和实参L没有任何关系。(不能以为传递指针后,形参和实参就是同一个东西了,要避免形参指针在局部函数里指向其他地址

知道了L=s失败的原因;那,为什么*L=*s却可以实现嘞?

Ls都是一级结构体指针,使用*可以将整个解结构体复制过去,包括data、next、prior

data是int类型的,而next和prior同样都是结构体指针,保存的是地址,所以在值传递的时候传递的也是地址。L在清空之后,L->data=0,L->next=NULL,L->prior=NULL;在执行*L=*s之后,L->data=s->data,L->next=s->next,L->prior=s->prior;实参L和形参L保存的地址没有改变,修改的是实参中保存的值;而且,此时L和s所指向的是同一个双向链表,只不过头节点有两个

最后还要注意将s的头节点释放。


http://www.ppmy.cn/ops/134235.html

相关文章

1.两数之和-力扣(LeetCode)

题目: 解题思路: 在解决这个问题之前,首先要明确两个点: 1、参数returnSize的含义是返回答案的大小(数目),由于这里的需求是寻找数组中符合条件的两个数,那么当找到这两个数时&#…

「Qt Widget中文示例指南」如何创建一个窗口标志?(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 窗口标志要么是类型…

数仓建设之Oracle常见语法学习

1. 字符串截取 select substr(AAA-BBB, 1, instr(AAA-BBB, -, -1) - 1) 值 from dual; --AAA select substr(AAA-BBB, instr(AAA-BBB, -, -1) 1) 值 from dual; --BBB2. 帆软报表有参数SQL select a.agency_code, a.agency_name, a.agency_typefrom dw.dim_ta_subred_agency…

Ubuntu22.04.2 k8s部署

k8s介绍 简单介绍 通俗易懂的解释: Kubernetes(也被称为 K8s)就像是一个大管家,帮你管理你的云计算服务。想象一下,你有很多个小程序(我们称之为“容器”),每个都在做不同的事情&…

Tiktok对接和内容发布申请流程

这段时间在搞AI生成视频,希望用户能一键发布到Tiktok,因此研究了一下Tiktok的开发者申请流程,发现好复杂,同时也发现Tiktok的开发也跟我一样,挺草台班子的 0、流程简述 废话不多说,Tiktok的开发者申请和…

确保以管理员权限运行 Visual Studio 开发者命令提示符

文章目录 解决方法:1. 以管理员身份运行命令提示符2. 改变目录权限3. 改变项目目录位置4. 检查文件系统权限 总结: ********************************************************************** ** Visual Studio 2022 Developer Command Prompt v17.12.0 …

基于微信小程序的高校实习管理系统设计与实现,LW+源码+讲解

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…

数据结构 -- 二叉搜索树

二叉搜索树 概念 二叉搜索树又称为二叉排序树,它或为空树,或为具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于等于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于等于根节…