为了账号安全,请及时绑定邮箱和手机立即绑定

指针与引用

指针与引用

C++
一只萌萌小番薯 2019-07-11 13:40:10
指针与引用当赋予一个函数原始变量来处理时,什么是更好的实践:unsigned long x = 4;void func1(unsigned long& val) {      val = 5;            }func1(x);或:void func2(unsigned long* val) {      *val = 5;}func2(&x);IOW:有什么理由选一个而不是另一个呢?
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

我的经验法则是:

如果要对指针执行指针算术(例如增加指针地址以遍历数组),或者必须传递空指针时,请使用指针。

否则使用引用。


查看完整回答
反对 回复 2019-07-11
?
largeQ

TA贡献2039条经验 获得超7个赞

我认为建立以下函数调用编码准则会使您受益:

  1. 就像在所有其他地方一样,永远是const-正确。

    • 注意:这意味着,除其他外,只有out值(见项目3)和通过值传递的值(见项目4)才可能缺少

      const

      说明符。
  2. 只有当值0/NULL是当前上下文中的有效输入时,才按指针传递值。

    • 理由1:AS打电话的人,你看,不管你经过什么一定是处于可用状态。

    • 理由2:AS,你知道,不管是什么处于可用状态。因此,不需要对该值执行空检查或错误处理。

    • 理由3:理据1和2将是编译器强制..如果可以,请始终在编译时捕获错误。

  3. 如果函数参数是一个输出值,则通过引用传递它.

    • 理由:我们不想破坏第二项.
  4. 只有在值为POD(普通旧数据结构)或足够小(内存方面)或在其他方面足够便宜(时间上)来复制。

    • 理由:避免不必要的拷贝。
    • 注:

      足够小

      够便宜的

      不是绝对可以测量的。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 356 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信