C++ 引用

定义

引用是变量的别名

特点

  • 寄生性
    a)不能独立存在。出生时必须指定其对应的别名对象(作形参时通过实参隐式获取)
    b)不占用独立地址。引用和其所代表的变量完全相同,建立引用,并不增加任何空间
  • 专一性
    一个引用名能且只能作为某一个变量的别名,不能二次"赋值"
  • 等效性
    对引用的任何操作和对引用所代表的变量本身的操作完全等同
  • 传递性
    引用也可以作为引用

应用

作为函数参数:对形参(引用)的操作,完全等同于对实参的操作(引用的等效性)

区别

  • 指针: 指针是实际独立存在的变量
    a)指针没有寄生性,独立,且占用内存地址
    b)指针没有专一性,可以多次赋值
  • define: define只是字符的简单替换
    define没有等效性,define只做字符替换,在值的内容上不作联系

其他注意事项:

  • 不能建立void类型的引用,如 void &a=9;
    任何实际存在的变量都属于非void类型,void含义是无类型,只是在语法上认为是一个类型
  • 引用类型不是一个类型
    int&* b=a;//错误,企图定义一个指针,该指针指向int型的引用
    
  • 用const限制引用:
    a) 不能通过引用的值改变原值,可以通过原值改变引用的值(保护形参不会改变)
    int i=5;
    const int &a=i;
    a=4;  //错误
    i=4;  //正确,此时a的值也变为4
    
    b) 可以使用常量、表达式、不同类型的变量对引用进行初始化(没有const的情况下,引用只能作为和其类型相同的变量本身的引用)
    int a;
    int & b = a+3;  //错误
    const int & b = a+3;  //正确
    //==========================
    long  a;
    int & b = a;    //错误
    const int & b = a;  //正确
    
    以上两种情况中,b都不是a的引用,而是a进行相应运算或者类型转换后的临时变量的引用,这个临时变量由系统自动生成,用户访问不到
    所以,a改变,b不受影响(b不是a的引用),b的值不能再改变了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值