序言
曾经学的C语言止步于指针,如今重新拾起,意外发现正在学习的python的内存机制与c语言内存机制存在区别
Python值传递
首先我们先来看一个python简单的值传递代码
num1 = 666
num2 = num1
# id()函数用于获取对象的内存地址
print(id(num1),num1)
print(id(num2),num2)
运行一下这个代码,得到以下结果:
显而易见,两个变量的地址是一样的,说明值传递后,两个变量指向同一个地址,这种方式节省了空间
当改变一个变量值后,两个变量地址就不相同了,再次验证
num1 = 666
num2 = num1
num2 = 88
print(id(num1),num1)
print(id(num2),num2)
C语言值传递
我们还是来看个C语言简单的值传递代码
#include <stdio.h>
void main() {
int a = 10;
int b = a;
printf("a的地址是%p\nb的地址是%p", &a,&b);
}
再来看看结果
由此可知,C语言中即便两个变量的值相同,但地址是不会相同的