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語言中即便兩個變量的值相同,但地址是不會相同的

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