我又犯病了,在做Leetcode No.88的时候竟然又犯了参数值传递的老毛病,写篇文章引以为戒
lc88题目给出的方法是带参无返回值的方法,要求是将合并后的数组存在nums1中
自然会开辟一个新的数组nums3用来临时存储nums1与nums2合并之后的结果
但是!!!为了偷懒逐个修改nums1中的值,我做了如下操作
nums1 = nums3;
然后提交答案,自然答案错误
我还心想把nums1指向nums3对应的地址空间,那么nums1存储的数据就和nums3里的数据一样了啊,为什么lc跑出来的结果没有变化。我甚至在Idea里打断点调试都还没意识到问题所在,因为我打的断点位置就是上面那句代码的位置…
好了说下原因,因为这里的方法传参传的是数组引用的拷贝,可以说它是引用传递,但是实际上还是值传递,传递的是nums1数组引用的拷贝值,在方法内部当然可以更改这个拷贝值,但是更改拷贝值并不会影响到原引用值!!!
能做的只能是通过这个数组引用,也就是指针吧,逐个修改对应存储空间里数据完成对nums1的修改