指针与引用

本文深入探讨了指针和引用的概念,解释了它们之间的主要区别,并提供了使用场景和注意事项,帮助开发者在合适的情况下选择正确的数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.pointer可以为空,但是reference 不能为空。说明一下几个问题:

   a. 如果你的变量可能为空,那么你应该将其设计为pointer而不是refrence。反之,如果你的变量不能取空值,那么你应该将其设计为reference。 

   b. reference既然不能为空,也就必须在定义的时候,它就必须被给予一个合理的值。而指针可以为空。

int a = 10;  
int *p;         //合法  
int& r;         //非法  
int& r = a;     //合法  

以下行为要避免:

int *p = null;   
int& r = *p;  
  c. 在reference和pointer都可以使用情况下,使用reference更安全。因为reference不能为空,所以在使用之前不需要判断其值是否为空。

2.pointer所指的对象可以改变,但是reference所指的对象始终不变(通过reference修改的值,最终都会修改reference所引用的那个对象的值)。

如果你所设计的变量在不同时刻需要指向不同的对象,那么需要将其设计为pointer。反之,可以设计为reference因为使用更安全。

  1. string s1("hello");  
  2. string s2("world");  
  3. string& rString = s1;   //rString引用的是s1对象  
  4. string *pString = &s2;  //pString指向s2对象  
  5. rString = s2;         //此处只是将s1的值修改为world,即将s2的值赋给s1;  
  6. pString = &s1;        //此处pString将指向s1对象      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值