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