面试常考之引用和指针的区别

浅谈引用和指针的区别

** 相同点:**
都表示地址的概念。指针指向一块内存,它的内容所指内存的地址;而引用则是某块内存的别名。
** 不同点:**
①指针是一个变量,需要分配内存空间。而引用仅仅只是变量的别名,不需要分配内存空间。
②指针在定义的时候不一定要初始化(一般情况下需要初始化,避免野指针),并且指向的空间可变。引用在定义的时候必须进行初始化,以后不能够改变;(注:引用的值不能为NULL。)
③指针可以有多级指针( int** p1; // 合法。指向指针的指针),但是没有多级引用( int&& p4; // 非法。指向引用的引用是非法的)。
④指针有const,const的指针不可变。引用没有const,(具体指没有 int& const a这种形式,而const int& a是有的,前者指引用本身即别名不可改变,引用本来就不可改变,所以不需要这种形式,后者指引用所指的值不可改变)。
⑤sizeof 指针得到的是指针本身的大小(在32位机中,任意类型指针在内存上所占空间大小均为4字节)。而sizeof 引用,得到的是其指向的变量本身的大小。
⑥指针和引用的自增(++)运算意义不一样。指针是指向下一个空间。而引用是引用的变量值加1。
⑦指针访问一个变量是间接访问。而引用访问一个变量是直接访问。
⑧引用类型是安全的,而指针不是(引用比指针多了类型检查,防止其为空)。
⑨指针可以指向数组,而引用不可以引用数组。
补充①:理论上,对于指针的级数没有限制,但是引用只能是一级。
补充② int*& p2; // 合法。指向指针的引用。
int&* p3; // 非法。指向引用的指针是非法的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值