• 打赏
  • 举报
回复
你好 我打印了 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