C++——指针和引用

引用是C++里才提出来的,引用标识符——&
概念
引用就是某一个对象(变量)的别名
举例:
int a =10;
int &b = a;
//解释:b就是a的一个引用,a是被引用物


上面a和b共用一段内存,说明b引用a的时候系统没有给b分配内存


指针表示的它所指向对象的地址 (由于在C里面已经对指针讲述的很多,这里就不在多说,更多的是在C++里面的引用

举例:


解析:p是一个指向value的指针变量,,而且p会有自己的地址

联系

1、都是关于对地址的概念

指针是指向一块内存空间,指针存的是内存空间的地址;引用是一段内存空间的别名

2、都能间接访问对象

引用可以简单的 当做是一个指针来使用

3、都可以作为函数形参和返回值

区别:

1、指针是一个实体(有自己的内存空间),引用只是一个只是对空间添加一个名字(系统 不会分配内存)

2、指针是可变的,引用是不可变的

指针由于系统给分配了内存,它可以指向其他对象(变量);在逻辑上是独立的

     引用没有被另外分配内存,所以 引用一开始就必须初始化,而且引用一旦和某个对象绑定就不能再改变了(从一而终)
3、指针可以为NULL,引用不可以
指针可以指向NULL,而引用必须与合法的存储单元关联
4、传递方式不同
分析


函数形参和返回值的传递方式可以分为3种:值传递、指针传递、引用传递
<1>值传递,在传递过程中,会在栈中开辟内存空间存放由主调函数放进来的实参的值,从而成为了实参的一份拷贝。
     值传递的特点:调用的是实参的一份拷贝,不会影响主调函数的是参变量的值
<2>指针传递本质上是值传递,只不过它所传递的是一个地址值。形参是一个指针变量,该变量拷贝了实参的地址值,作为被调函数的局部变量,我们可以用“*”操作符访问实参的值
<3>引用传递,被调函数的形参虽然作为局部变量在栈中开辟了内存空间,但这时存放的是由主调函数放进来的实参变量的地址。被调函数的形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。
5、引用不能const,指针可以const
没有 int& const a ,但是 有const int& a ,前者说明引用本身不可改变(引用只能对初始化一次),所以前者本来就是多余的。
6、sizeof(引用变量) 是 所引用对象的大小,sizeof(指针变量) 表示指针本身的大小 (4字节)
7、指针和引用的自增(++)意义不同
8、引用速度快,但和指针的效率差不多
9、引用比指针安全,引用用起来比指针简单,引用提高了可读性。




















  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值