3-4选择题

来源:3-7 选择题

左小珍

2018-01-29 21:49:14

这个题目自己用电脑试了运行结果 b a 都是[4,44]
选择题答案是b为[4]和a为[4,44],但是都不太明白为什么不是输出b为[4,44]和输出a为[4]
希望得到大家的解答,谢谢

写回答

4回答

离离钟

2018-10-27

在十二行运行之前,a和b指向的是同一个空间,

在第十二行运行完的时候,a被重新赋值,指向了一个新的地址,在堆内存中开辟了一个新的空间,但b还是原来那个老的空间,所以执行完第十二行的时候,a=[4, 44],b=[4],这已经是两个不同的空间了,接着第十四行,又把a=b,就是把a又指向了b的空间,这是两者又相同,都是[4],再下一行,为b添加了一个值44,这时a和b指向同一个空间,所以这时的a和b是相同的,都是[4, 44]。

0

一路电光带火花

2018-04-10

因为a是重新赋值呀,重新赋值的话,不会影响b的指向。可以测试下。

0

好帮手慕糖

2018-01-30

你好,因为a是重新赋值,赋值不会影响b的地址指向。然后a=b,这一步,又让二者的指向相同(把b的指向赋值给a);但是push向b里面添加数据,会影响地址。

祝学习愉快~

0

好帮手慕糖

2018-01-30

你好,首先a=[4],是引用类型的数据,然后,a的值赋值给b,b也指向4。

变量a重新赋值,并不会影响b的指向,所以输出的b还是[4]。

b的值赋给a,又将a的指向改变,指向了4(此时,a和b的指向是一样的)。通过push向b里面添加了44,所以a指向的也是[4,44]。

祝学习愉快~

0
hq_痴心欲_0
h 我也是这样疑问,a和b指向同一个地址,a发生改变,b怎么可能不变呢?!!!
h018-04-09
共2条回复

0 学习 · 4826 问题

查看课程