指针与引用的异同

             在C++中在任何能用指针的地方都可以改用引用。那两者区别何在?

指针:即一类专门用来存储别的变量地址的变量,它的内容没有别的,只存别的变量的地址。而且指针变量的内容可以任意改变(也就是存储的地址可以改变,指向任意变量)。例:int *p = 变量地址   p就是指针变量

引用:做为其它变量的一个别名而存在,就像一个人的外号一样。外号与姓名都是指本人。而引用只能与一块内存地址唯一绑定,只能初始化一次,此后只代表这块内存地址的别名。而且必需在声明的时候初始化。  例:int & a = b;  //此时a就是引用,做为变量b的别名

相同点:

1.指针与引用其实没有实质性的差别,引用可以认为是一种特殊的指针,它传递的也是地址。只是编译器对其进行了包装。使其应用起来语法更加清晰。

2.在任何能用指针的地方都可以用引用来代替。

不同点:

1.引用声明的时候必需初始化,且只能与一块内存地址绑定,以后不能再改变指向其它内存地址。而指针变量可以声明的时候不初始化,且指向的地址可以再次改变,比引用更具有灵活性。

2.引用不能用常量来初始化。例:int &a = 9;    此时编译错误,因为此时引用a是做为常量9的别名而存在的,而此时的引用却不是常量引用(即引用前没有加const关键字,来声明这引用内容不可改变)。所以编译器认为此时引用a与9存在不一致性。直接报错,因为引用a可以改变内容,改变了内容也就不再是9了。所以直接错误,正确的做法是 const int &a = 9;      保证引用a是常量 和9一样的性质。

我的个人网站

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值