仔细认识c++ 中pointers和references。

    指针和引用看起来很不一样(pointers使用"* "和"->"操作符, references使用 "."),但用起来总觉得很相似。下面就仔细抠一下它俩之间的相同和不同之处,以及各自的使用场合。
    首先必须认知一点,引用没有 null references。 一个引用必须代表一个对象。所以如果你使用一个变量指向(代表)另一个对象。但是它也有可能不指向任何对象,这时候要用指针。如果你的设计并不允许这个变量 null,这时你应该用引用。
一个引用一定得代表某个对象,所以c++规定引用必须有初值。
int &a; //错误! 引用必须有初始值
int b;
int &a = b; //正确。 a指向b。
int *ptr; //正确,声明了一个空指针。

但也正是引用不许为 null , 编程中使用引用时不用检查它是否合法。

void print_stu(stu &pe)
{
    cout<<pe<<endl; //不需要测试是否合法,它必须指向一个stu对象。
}

如果使用指针,就必须对它进行测试。

void print_stu(stu *pe)
{
   if(pe)  //检查是否为 null  pointers
      cout<<pe<<endl; 
}

指针和应用之间的另一个重要差异是指针可以改变指向,而引用不可以改变指向。

string s1("wohaoshui");
string s2("shima?");
string &rs = s1;
string *ps =&s1; 
rs = s2; //rs仍然指向s1 , 但s1的值已经变成 "shima?" 了。
ps = &s2; //ps指向s2 , s1没有变化。

因此 : 当你知道你需要指向某个东西,而且绝不会改变其指向,你应该使用references , 任何其它时候,请采用pointers。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值