#include <iostream> #include <string> using namespace std; void main(int argc,char* argv[]) { int a=10; int b=20; int &rn=a; cout<<rn<<"|"<<a<<endl; cout<<&rn<<"|"<<&a<<endl;//c++中是无法取得应用的内存地址的,取引用的地址就是取目标的地址! rn=b;//把引用指向另一个目标----变量b cout<<&rn<<"|"<<&a<<"|"<<&b<<endl; rn=100;//试图改变b的值 cout<<a<<"|"<<b<<endl;//输出修改后的结果 cin.get(); }
由于引用本身就是目标的一个别名,引用本身的地址是一个没有意义的值,所以在c++中是无法取得引用的内存地址的。取引用的地址就是取目标的地址,c++本身就根本不提供获取引用内存地址的方法。
引用一单初始化,就不在能够被指向其它的目标,虽然编译不会出错,但操作是不起作用的,实际上还是指向最先指向的目标。
上面代码中的rn=b实际在计算机看来就是a=b,所以修改的还是a的值。 #include <iostream> #include <string> using namespace std; void main(int argc,char* argv[]) { int a=10; void &rn=a;// 错误的,void即无类型的类型 int a[100]; int &ra[100]=a;//错误,不能声明引用数组 cin.get(); } 上面的两错误要记住引用的特性,void修饰是不能够声明引用的,引用是不能够声明数组的,即不能够声明引用数组。
|