python与c++ 值传递 地址传递
python与c++在变量间赋值时的行为不一样。
c++中对变量赋予新值时,变量指向的地址不变。
python中对变量赋予新值时,变量指向新值的地址。(python中值本身有自己的地址)
见代码:
c++ code:
#include <iostream>
using namespace std;
int main() {
int a = 1; //数据(1)储存在a所在的内存空间
int b = a; //值传递,此时有两份数据(1)
cout << "a: "<< a <<endl;
cout << "b: "<< b <<endl;
cout << "a add: "<< &a <<endl;
cout << "b add: "<< &b <<endl<<endl;
a = 2; //对a所在的空间赋予新的数据(2),对b没有任何影响
cout << "a: "<< a <<endl;
cout << "b: "<< b <<endl;
cout << "a add: "<< &a <<endl;
cout << "b add: "<< &b <<endl<<endl;
return 0;
}
c++ output:
a: 1
b: 1
a add: 0x7ffdf9636e90
b add: 0x7ffdf9636e94
a: 2
b: 1
a add: 0x7ffdf9636e90
b add: 0x7ffdf9636e94
python code:
a = 1 #在内存中创建数据(1),并将其的地址传递给a
b = a #将a的地址传递给b,此时只有一份数据(1)
print("a: ",a)
print("b: ",b)
print("a add: ",id(a)) #指向数据(1)
print("b add: ",id(b),"\n") #b的地址与a一样,都指向数据(1)所在的内存
a = 2 #在内存中创建数据(2),并将其的地址传递给a。b仍然指向数据(1)
print("a: ",a)
print("b: ",b)
print("a add: ",id(a)) #指向数据(2),与c++不同!!
print("b add: ",id(b),"\n") #仍然指向数据(1)
python output:
a: 1
b: 1
a add: 9079008
b add: 9079008
a: 2
b: 1
a add: 9079040
b add: 9079008

浙公网安备 33010602011771号