指针 和引用 自由 与 禁锢

引用和指针的区别

1 指针

指针就是地址

2 引用

引用是给已经存在的变量取别名

备注: 引用在语法概念上,就是一个别名,没有他自己的独立空间,和引用实体共用一段内存空间
引用在底层实现上,实际上是有空间的,它在底层是按照指针的方式来实现的

int  main(){
      int a = 10;;
      int &ra = a;//给变量a取别名
      cout << &a << endl;
      cout << &ra << endl;

      int *pa = &a;//给变量a取地址
      ra = 20;
      cout << a << endl;
      //*pa = 20;
      //cout << a << endl;

      double b = 100;
      double &rb = b;
      cout << sizeof(&b) << endl;//指针sizeof占个字节(32位平台)  
      cout << sizeof(rb) << endl;// 引用结果为引用类型的大小
      system("pause");
      return 0;
}

3 引用的应用场景

作为函数的参数:
如果需要通过形参来改变外部实参 可以传引用(&)
不需要通过形参来改变外部实参 可以传(const &)

作为函数的返回值 :注意不能返回函数栈的空间
备注: 只要返回值的生命周期不受函数控制(函数结束后不影响变量的生命周期)
1全局变量
2 static 修饰的变量
3 返回引用类型的变量

4 指针和引用区别大锦集

1 引用在定义时必须初始化(引用必须和一个已经存在的变量绑在一块,它不可能独立存在),而指针没有要求,指针是自由主义者,指针可独立存在
2 引用只能依附于他所引用的实体,不能再去引用别的实体.而指针拥有自由的灵魂,想指谁就指谁 .
例:T&等价于T*Const(指针和引用一样只能指向一个实体)
Const T&等价于Const T*const(指针和引用都不能修改实体的内容)

3 没有空引用,但是有空指针
4 在求sizeof时,引用结果为它的引用实体类型的大小,而指针不一样,指针始终是地址空间所占字节数(32位平台下占4个字节,64位平台下占8字节)
5 引用自加 比如 int a=10;int &ra=a; ra++ <==>a++; 而 指针自加指针向后偏移一个类型的大小(指针所指空间连续时,指针++才有意义)
6 存在多级指针,但是不存在多级引用
7访问实体方式不同,指针需要显式解引用,而引用是编译器在底层自己处理
8 引用比指针使用起来更安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值