采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好,在看链表的时候我就比较纠结一个问题,像这里这个ListNode cur = this应该是引用传递吧? 这样才能解释for循环中第一句为cur.next赋值之后,this.next也能等于新生成的node,那为什么在cur = cur.next之后,cur的值和地址都改变了,而this的内容却没有随着改变呢?老师能不能抽空帮我解答一下,不胜感激
ListNode cur = this
@慕九州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不会变
继续加油
懂了,对比说明,我发现我之前应该是把cur=this这一步当成引用传递了,谢谢老师
ListNode cur = this;//cur和this的引用相同
cur = cur.next;//cur的引用变成了cur.next,但是this的引用并没有变化
大赞!感谢分享:)
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
10.4k 16
1.4k 17
1.3k 14