【问题标题】:Passing "*&" parameters to a function将“*&”参数传递给函数
【发布时间】:2014-05-17 18:56:29
【问题描述】:

我有一个我应该定义的函数(大学实践),如下所示:

void add_str(char* &a, char* b);

它应该将第二个字符串添加到第一个字符串。 为什么要将 *& 参数传递给函数,什么时候有用?

【问题讨论】:

  • 由于您指的是 C 字符串:您的示例中的代码可能无用或错误(不知道/通过 'a' 的容量)
  • @DieterLücking 嗯,这可能不是一个漂亮的方法,但为什么没用/错误?
  • 字符串需要以null结尾才能正常工作。
  • 问题不是“我的函数什么时候有用”,而是“什么时候传递带有*&有用的参数”。由于这是一个学术示例(如问题中所述),我认为它 相当 可以安全地假设 ab 连接有足够的空间并且两者都是空终止的。 .
  • @DieterLücking 正如 snps 所说,字符串以空值结尾,因此 a 的容量不是必需的。

标签: c++ function pointers parameters reference


【解决方案1】:

因为您将需要创建新空间来保存连接的字符串,并且您需要以某种方式将其传回。此签名允许函数覆盖传入的参数,以便调用者提供的指针将移动到指向新字符串。

这是一个非常非常愚蠢的解决问题的方法,但老师可能正试图提出某种观点。希望这是一个好的。我不喜欢断断续续的例子,但当你想教的东西通常在太复杂而与新手相关的东西中找到时,很难想到合法的例子。

【讨论】:

    【解决方案2】:

    它允许add_str 修改作为a 传递的任何内容。这就是非常量引用参数的用途;它只是看起来很奇怪,因为参数是指针而不是简单类型。

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 2021-04-18
      • 2014-02-07
      • 2021-04-13
      相关资源
      最近更新 更多