首页 >后端开发 >C++ >在 C 中什么时候应该使用引用而不是指针?

在 C 中什么时候应该使用引用而不是指针?

Barbara Streisand
Barbara Streisand原创
2024-11-20 14:45:17504浏览

When Should You Use References vs. Pointers in C  ?

理解 C 中的引用和指针传递

在 C 中,通过引用或指针向函数传递参数是修改函数作用域之外的实际值的常见做法。然而,理解何时使用哪个可能会令人困惑。

按引用传递

按引用传递允许直接访问和修改原始变量。它用于:

  • 改变大型对象(例如字符串、向量)以避免不必要的复制。
  • 在两个函数使用相同变量的情况下传递输入输出参数。

路过指针

通过指针传递可以通过指针间接访问变量。在以下情况下是必要的:

  • 需要操作指针(例如,重新分配给新对象)。
  • 传递空值,不允许引用。
  • 防止修改原始变量(传递一个 const指针)。

良好实践

作为一般准则,建议在以下情况下使用参考:

  • 您想要改变原始变量。
  • 您有一个非空值通过。
  • 原始变量不是太大。

在以下情况下使用指针:

  • 需要操作变量的地址。
  • 您有可为空的值。
  • 您想要防止修改原始值

示例

以下代码片段演示了使用引用传递大对象的常见场景:

void foo(std::string& s) {
  s += "suffix";
}

如果函数需要创建新字符串,则在这种情况下通过指针传递将是合适的object:

void foo(std::string* s) {
  *s = "new string";  // Deallocates the old string
}

在极少数情况下,按值传递也可能是合适的,例如复制小型不可变对象(例如,原始类型)不是问题时。

以上是在 C 中什么时候应该使用引用而不是指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn