鱼C论坛

 找回密码
 立即注册
查看: 1800|回复: 6

[已解决]为什么字典的这个赋值和普通的变量赋值效果不一样啊?

[复制链接]
发表于 2019-8-11 14:39:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么字典的这个赋值和普通的变量赋值效果不一样啊?

最佳答案
2019-8-11 14:46:19
因为字典 a 和 c 的内存地址是一样的,而变量 a 和 c 的内存地址不一样
QQ截图20190811143707.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-11 14:46:19 | 显示全部楼层    本楼为最佳答案   
因为字典 a 和 c 的内存地址是一样的,而变量 a 和 c 的内存地址不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-11 19:55:04 | 显示全部楼层
zltzlt 发表于 2019-8-11 14:46
因为字典 a 和 c 的内存地址是一样的,而变量 a 和 c 的内存地址不一样

大佬学到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-11 20:08:27 | 显示全部楼层
赋值和拷贝本身就是不同的操作,a.copy()会在内存的新地址生成一个一模一样的字典,c = a只是说把a 和 c都指向了a原来那个地址上的字典,所以修改c也就修改了a,b在其他地址,不受影响。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-12 10:06:56 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2019-8-12 10:09 编辑

因为字典是可变对象,所以修改c时也同时修改了a,然而b是重新创建的一个对象,所以不受c的影响,没有变化。
而int是不可变的,所以c=2直接创建了一个新的int实例2,并把c指向这个新的实例。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-17 23:27:20 | 显示全部楼层
看不懂

评分

参与人数 1鱼币 -2 收起 理由
zltzlt -2 请不要无意义灌水!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2019-10-6 13:23:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-21 17:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表