猿问

指针与引用

指针与引用

当赋予一个函数原始变量来处理时,什么是更好的实践:

unsigned long x = 4;void func1(unsigned long& val) {
     val = 5;            }func1(x);

或:

void func2(unsigned long* val) {
     *val = 5;}func2(&x);

IOW:有什么理由选一个而不是另一个呢?


一只萌萌小番薯
浏览 357回答 3
3回答

慕工程0101907

我的经验法则是:如果要对指针执行指针算术(例如增加指针地址以遍历数组),或者必须传递空指针时,请使用指针。否则使用引用。

largeQ

我认为建立以下函数调用编码准则会使您受益:就像在所有其他地方一样,永远是const-正确。注意:这意味着,除其他外,只有out值(见项目3)和通过值传递的值(见项目4)才可能缺少const说明符。只有当值0/NULL是当前上下文中的有效输入时,才按指针传递值。理由1:AS打电话的人,你看,不管你经过什么一定是处于可用状态。理由2:AS叫,你知道,不管是什么是处于可用状态。因此,不需要对该值执行空检查或错误处理。理由3:理据1和2将是编译器强制..如果可以,请始终在编译时捕获错误。如果函数参数是一个输出值,则通过引用传递它.理由:我们不想破坏第二项.只有在值为POD(普通旧数据结构)或足够小(内存方面)或在其他方面足够便宜(时间上)来复制。理由:避免不必要的拷贝。注:足够小和够便宜的不是绝对可以测量的。
随时随地看视频慕课网APP
我要回答