关于引用传递的问题
来源:5-2 测试自己的Leetcode链表代码
残天一月
2019-03-28
老师您好,在看链表的时候我就比较纠结一个问题,像这里这个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不会变
继续加油
112019-03-30 -
慕九州3166796
2019-03-28
ListNode cur = this;//cur和this的引用相同
cur = cur.next;//cur的引用变成了cur.next,但是this的引用并没有变化
112019-03-29
相似问题