C++中变量是按值访问的, Python 中变量的值是按引用访问的示例说明
C、C++、Python如何获取变量的地址
C语言
在C语言中,可以使用取地址运算符(&)来获取变量的地址。
例如:
#include <stdio.h>
int main() {
int i = 10;
printf("变量i 的地址是:%p\n", &i );
return 0;
}
C++语言
在C++中,可以使用取地址运算(&)来获取变量的地址。C++还可以使用addressof()函数来获取变量的地址,注意addressof()函数是 C++11 标准库中引入的。
例如:
#include <iostream>
using namespace std;
int main() {
int i = 10;
cout << "变量i 的地址是:" << &i << endl;
cout << "变量i 的地址是:" << addressof(i) << endl;
return 0;
}
Python语言
在Python中可以使用内置函数id()来获取变量的地址。例如:
i = 10
print("变量i 的地址是:", id(i))
需要说明的是,变量的地址通常是由操作系统和运行时环境自动管理的,因此它们通常不是固定不变的,如在不同的计算机上显示的不同值是正常的。
示例说明
请仔细比较解释下面两段代码运行结果
C++代码:
#include<iostream>
using namespace std;
int main(){
int a = 0;
cout<<a<<" "<<&a<<endl;
a=a+1;
cout<<a<<" "<<&a<<endl;
int b=a;
cout<<b<<" "<<&b<<endl;
b=20;
cout<<a<<" "<<&a<<endl;
cout<<b<<" "<<&b<<endl;
}
Python代码:
a=0
print(a,id(a))
a=a+1
print(a,id(a))
b=a
print(b,id(b))
b=20
print(a,id(a))
print(b,id(b))
C++中的是按值访问的, Python 中变量的值是按引用访问的。
在C++中,变量a和b分别占用不同的内存空间。当将a的值赋给b时,会将a的值拷贝给b,但是a和b是独立的变量,存储在不同的内存地址中。
在Python中,变量a和b都是指向同一个内存地址的引用,它们共享同一块内存空间。当将a的值赋给b时,b实际上是指向了a所指向的内存地址。