-
C语言中的赋值
i = 3;
i 存储的是数据3
- 系统为 i 分配一块内存
- 把 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所在的地址
- Python中一切都是对象,每一个对象都是一个内存块。(例如这里的 3 ,包括了 3 所在的地址,3 的数据类型, 3 这个数值)
- 变量 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未若 ,原稿传送门!!!