请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于引用传递的问题

图片描述
老师您好,在看链表的时候我就比较纠结一个问题,像这里这个ListNode cur = this应该是引用传递吧?
这样才能解释for循环中第一句为cur.next赋值之后,this.next也能等于新生成的node,那为什么在cur = cur.next之后,cur的值和地址都改变了,而this的内容却没有随着改变呢?老师能不能抽空帮我解答一下,不胜感激

正在回答

2回答

@慕九州3166796 的解释完全正确。所谓的引用本质是存储一个指针指向真正的内存空间。或者你可以理解成所谓的引用只是存储了一个内存地址。我们通过这个内存地址到真正的内存去寻找真正的内容。而一个内存地址本质就是一个整数。

ListNode cur = this;  // cur和this的引用相同
                      // 就是说cur和this现在存储的是同一个地址指向同一个内存空间
cur = cur.next; // cur的引用变成了cur.next,
                // 就是说cur和现在存储了一个新的地址但是this所存储的地址是不改变的


由于内存地址本质就是整数所以和下面的例子是一样的

int t = 3;
int cur = t; 
cur = 100; // cur发生了改变但t不会变


继续加油

1 回复 有任何疑惑可以回复我~
  • 提问者 残天一月 #1
    懂了,对比说明,我发现我之前应该是把cur=this这一步当成引用传递了,谢谢老师
    回复 有任何疑惑可以回复我~ 2019-03-30 09:05:16
慕九州3166796 2019-03-28 23:02:55

ListNode cur = this;//cur和this的引用相同

cur = cur.next;//cur的引用变成了cur.next,但是this的引用并没有变化

1 回复 有任何疑惑可以回复我~
  • 大赞!感谢分享:)
    回复 有任何疑惑可以回复我~ 2019-03-29 00:27:30
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信