引用的定义
所谓别名的意思。
类型&引用量名称 = 变量名称;int &c=a;
这就引用变量的定义,&和类型结合称之为引用符号,而不是取地址符的意思。
引用的特点
1.引用必须初始化
2.没有空引用
3.没有引用的引用就是二次引用的说法
const引用
int main()
{
int a = 10;
const int b = 20;
int& x = b; // error;编译不通过
const int& x = b;// ok;
const int& y = a;// ok;
const int& z = 10; // ok;
return 0;
}
引用作为形参替代指针
使用指针交换两个整型值
使用引用交换两个整型值
引用的其他形式
1.引用数组。2。引用指针
int main()
{
int a = 10,b = 20;
int ar[5] = { 1,2,3,4,5 };
int* p = &a;
int *&rp = p;//引用指针
int& x = ar[0];
int(&br)[5] = ar; //引用数组
return 0;
}
指针和引用的区别
1.从语法规则上讲,指针变量存储的是某个实例(对象或者变量)的地址;引用是某个实例的别名。
2.在内存区域上来看,程序需要为指针变量分配内存区域,而不需要为引用分配内存区
3.从解引用上来看,指针使用之前需要在前面加“ * ”;而引用可以直接使用
4.指针变量的值可以发生改变,存储不同实例的地址;而引用在定义时就被初始化,之后无法改变(不能是其他实例的引用)。
5.指针变量的值可以被定义为空(NULL,nullptr);而对于引用而言,没有空引用。
6.指针变量作为形参时使用“sizeof”得到的是指针变量的大小。对于引用变量使用“sizeof”得到是变量的大小。
7.理论上而言指针的级数没有限制(通常最多使用到二级指针);但是引用只有一级。即不存在引用的引用,但可以有指针的指针。
8.++引用与++指针的效果不一样。例如就++操作而言,
对于指针变量的++操作,会使指针变量指向下一个实体(变量或者对象)的地址;而不改变所指实体(变量或者对象)的内容。
对于引用的++操作直接反应到所引用的实体(变量或对象)上。
注意:不可以对函数中的局部变量或者对象以引用或指针方式返回。
如下都是错误的使用。