请稍等 ...
×

采纳答案成功!

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

关于指针和nil (4-1)

图片描述
图片描述
老师,您好。这里我有个点没弄懂。 pRoot = &root 这里将root的地址赋值给了pRoot, 那么pRoot不是应该就有了root.value属性吗(pRoot指向&root)?为什么在之后的.value的调用中会变成空指针呢?

正在回答 回答被采纳积分+3

1回答

ccmouse 2021-01-27 12:11:04

这里是我录像中一开始写的有问题的地方。

我们看20:03

https://img1.sycdn.imooc.com/szimg/6010e72109fffd0c17080976.jpg

这里我们在运行pRoot.setValue(200)的时候,它首先把这句话Setting value to nil node.打出来,然后继续运行19行,此时node是nil,就造成了panic。就是说这个panic发生在pRoot.setValue(200),而不是发生在pRoot.setValue(300)

后面我改掉了这个bug,就是在if node==nil之后加了return。见21:07


0 回复 有任何疑惑可以回复我~
  • 提问者 慕田峪983 #1
    明白了,理了一下,当 var a *treeNode时,这时 *treeNode 里的value也变成了一个*value,也就是如果在初始化时没有赋值时,那么 a.value 的结果就是 nil(因为a.*value不存在,指针指向空地址) ,而nil可以被传入setValue(因为是一个指针接收函数),但在进行a.value = value 操作时会panic。
    回复 有任何疑惑可以回复我~ 2021-01-27 15:04:18
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信