引用

引用是某个对象(变量)的别名
形式如下: 类型名 &引用名=变量名;
例如:

#include <iostream>
using namespace std;
int main()
{
  int i=4;
  int &r=i;
  cout<<r;
}

r和i其实是同一对内存变量,对r的操作就是对i的操作。
在使用引用是有一下几点需要注意:
1.在定义引用时&的位置是灵活的 无关于type之间有几个空格
2.在声明变量的时候的&才是引用运算符,在其他地方看做是取地址运算符

 int i;
   int &ir=i;//引用
   int &f(int &il,int &);//引用参数,函数返回引用
   int *p=&i;//qud取地址
   cout<<&i;//q取i的地址;

3.引用必须在定义是初始化,不能在定义之后在对期赋值,为引用提供初始值,同一个变量可以有多个引用,为其提供初始值时,可以是一个变量也可以是一个引用。

  int &f;//错误,未进行初始化
  int f;
  int &f1=f;//正确
  int &f2=f1;//正确

4.引用其实是一种隐式的指针,但是他与指针的用法之间存在区别。
区别一:指针必须通过才能访问他所指向的内存单元,但是引用不需要就可以访问其代表的内存单元;
区别二:指针是一个变量,可以对其重新赋值,让他指向另外的地址,但是引用必须在定义时进行初始化,而且一经定义不能再作为其他变量的引用了,下面这个例子很好的说明了这一点
这里写图片描述
在定义初始引用之后在对其赋值另一个,相当于是只把值给引用,但是引用还代表刚刚开始的那个。
5.当用&运算符获取一个引用的地址时,实际取出的是引用对应变量的地址。
6.在使用引用时要注意一下几个限制:
1.不能建立引用的引用(前面说的是用引用给引用初始化)
2.不能建立引用的数组,也不能建立数组的引用
3.可以建立指针的引用,但是不能创建引用的指针

#include <iostream>
using namespace std;
int main()
{
    int i=0;a[10];
    int &aa=a;//错误,aa是数组的引用
    int &ia[5]//错误,ia是引用的数组
    int &*p=i;//c错误,是ip是指向引用的数组
    int &&i;//cuowu错误,ii是引用的引用
    int *pi=&i;
    int *&pr=pi;//正确,pr是指针的引用
}

7.引用与左值,对于每个变量都有左值和右值,左值是指变量对应的那块内存区域的地址,是“可以放在赋值号左边的值”;右值是指变量对于内存区域中储存的数据值,是可以“放在赋值号右边的值”。
引用是一个左值,也就是说,引用一定与某块内存区域相对应,能够放在赋值号的左边。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值