关于C语言和Python赋值的差异

  • C语言中的赋值

i = 3;

i 存储的是数据3

  1.  系统为 i 分配一块内存
  2.  把 3 存到 i 所在内存中
int main()
{
	int i = 3;
	printf("i的地址为 %d , i = %d\n", &i, i);
	i = 5;
	printf("i的地址为 %d , i = %d\n", &i, i);
	
	return 0;
}

i的地址为 2293324 , i = 3
i的地址为 2293324 , i = 5

所以,C语言赋值时,变量的地址并没有变。

  • Python中的赋值

i = 3

i 存放的是数据3所在的地址

  1.  Python中一切都是对象,每一个对象都是一个内存块。(例如这里的 3 ,包括了 3 所在的地址,3 的数据类型, 3 这个数值)
  2.  变量 i 存放的只是对象 3 这个代码块的地址。( i 可以看做是这个对象的名字。当 i 发生了变化,这个对象并没有改变。
i = 3
print(id(3) ,id(i))
i = 4
print(id(4) ,id(i))
i = 5
print(id(5) ,id(i))

1786733776 1786733776
1786733792 1786733792
1786733808 1786733808

i 的地址是发生变化的,一个整数类型数据代码块是16个字节(机器不同可能不同吧)。但是储存数据的差别已经得到证明了。

 

这里要感谢 郝斌 老师的C语言教程,高淇 老师的Python教程!!!

问题解答的原作者  L未若 ,原稿传送门!!!

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值