首页 >后端开发 >C++ >C 中何时通过引用或指针传递:指导原则?

C 中何时通过引用或指针传递:指导原则?

Patricia Arquette
Patricia Arquette原创
2024-11-12 16:31:01784浏览

When to Pass by Reference or Pointer in C  : A Guiding Principle?

C 中的引用或指针传递:指导原则

在 C 中,了解何时使用引用传递以及何时使用指针至关重要。这种做法可以产生高效且无错误的代码。

一般情况

  • 将 std::string 传递给函数:

    • foo(std::string*) 或foo(std::string&)?
  • 将 tr1::shared_ptr 传递给函数:

    • foo(tr1::shared_ptr* ptr ) 或 foo(tr1::shared_ptr& ptr)?

指针与引用

通过引用传递提供了一致性,因为每个对象都可以被视为引用。然而,通过指针传递提供了处理空指针和文字的灵活性。

片段分析

给定的片段:

map<string, shared_ptr<vector<string>> > adjacencyMap;
vector<string>* myFriends = new vector<string>();
myFriends->push_back(string("a"));
myFriends->push_back(string("v"));
myFriends->push_back(string("g"));
adjacencyMap["s"] = shared_ptr<vector<string> >(myFriends);

突出显示了需求考虑引用和指针的属性:

  • 地图键使用引用,保证内存效率。
  • 向量指针允许动态分配,方便向量相加。

经验法则

最终,适当的选择取决于具体的要求。作为指导原则,请考虑:

  • 使用引用:为了高效内存使用以及保证对引用对象的访问。
  • 使用指针: 处理 nullptr、使用动态内存或需要修改引用本身时。

以上是C 中何时通过引用或指针传递:指导原则?的详细内容。更多信息请关注PHP中文网其他相关文章!

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