Python与C语言值传递内存机制区别

序言

曾经学的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语言中即便两个变量的值相同,但地址是不会相同的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章