在 C 中,有没有办法从返回类型为 string& 的函数中不返回任何内容?

新手上路,请多包涵

我正在尝试实现以下子例程。

 string& sortAndMerge(string &u, int start, int end){
    if(end>=0){

        int mid=(start+end)/2;

        if(start<end){
            sortAndMerge(u,start,mid);
            sortAndMerge(u,mid+1,end);
            return merge(u,start,mid,end);
        }
    }
    return;
}

该函数称为 sortAndMerge(s,0,s.length()-1),这里 s 是一个字符串。由于第三个参数最终可能为负数,因此我需要子例程来忽略这些情况。

我收到以下错误:-

 return-statement with no value, in function returning ‘std::string& {aka std::basic_string<char>&}’ [-fpermissive].

我有两个问题。

  1. 有没有一种方法可以从具有除 void 之外的返回类型的函数返回任何内容。

  2. 什么时候可以使用没有任何内容或 NULL 的 return 关键字。

原文由 user3578017 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 312
1 个回答
  1. 有没有一种方法可以从具有除 void 之外的返回类型的函数返回任何内容。

不,如果您希望您的程序正常工作,则不会。

  1. 什么时候可以使用没有任何内容或 NULL 的 return 关键字。

您可以只在返回类型为 void 的函数中使用 return 关键字。您可以在具有指针(非引用)类型作为其返回类型的任何函数中使用 return 关键字和 NULL

根据 NULL 的定义方式,我想你也可以从 int 作为返回类型的函数返回 NULL ,但只返回 0 会更有意义.

原文由 ApproachingDarknessFish 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题