- 打赏
- 举报
你好 我打印了 temp只是一个中间变量 出循环后只保留循环的最后一次值 我纠结的是为什么对temp的修改影响了res
- 打赏
- 举报
本帖代码是可以直接运行的
http://play.flysnow.org/
- 打赏
- 举报
首先,对temp的修改并没有影响到res
其次。对temp指向的目标的修改影响到了res指向的目标,因为它们指向了同一个目标。
你这里本质上有三个变量,temp,res 和*res
- 打赏
- 举报
好 谢谢你的提示哈~
但是temp指向的目标不应该与res指向的独立开了吗
是因为加了*ListNode这个缘故吗
还是因为虽然temp复制了res 但是他们都指向ListNode的指针是吗
其实最终返回的是*ListNode
- 打赏
- 举报
是我的理解不对 temp、res一直是对ListNode的引用 而不是复制 修改任意一个都会影响ListNode的值
- 打赏
- 举报
temp 和 res 都是指针,他们指向的地址是一样的。
但是指针本身在内存中的地址不一样。
- 打赏
- 举报
res := &ListNode{
Val: elements[0],
}
res实际得到的是一个指针。
temp := res,当然temp实际也是一个指针。
golang太多简化的语法,但简化的负作用就是坑更多。
不懂C语言的,从java转GO,碰到这种问题,必定一头雾水。
懂C语言,学GO很容易。
- 打赏
- 举报
嗯 这里很让人挺疑惑
- 打赏
- 举报
题主可以看一下C语言指针的内容。
- 打赏
- 举报
指针和值地址的奇淫技巧还是不太适应
- 打赏
- 举报
你需要打印 *temp和*res