#include <iostream>
#include <string>
using namespace std;
void main(int argc,char* argv[])
{
int a=10;
int b=20;
int &rn=a;
cout<
cout<<&rn<<"|"<<&a<
//c++中是无法取得应用的内存地址的,取引用的地址就是取目标的地址!
rn=b;
//把引用指向另一个目标----变量b
cout<<&rn<<"|"<<&a<<"|"<<&b<
rn=100;
//试图改变b的值
cout<
//输出修改后的结果
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修饰是不能够声明引用的,引用是不能够声明数组的,即不能够声明引用数组。