使用引用返回静态字符数组

return static character array by using reference

本文关键字:字符 数组 静态 返回 引用      更新时间:2023-10-16

现在我想编写以下代码的新版本:

const char * f() {
     return "Hello";
} 
const char *pf = f();

我想知道如何使用reference而不是pointer.

我有一个想法通过使用string.

有没有更直接的方法解决这个问题?

更新:

我仔细阅读了答案和评论。我有另一个想法是将返回值视为常量字符数组。但是这个解决方案似乎太复杂了,不像指针那么清晰。

如果你想知道语法,那么定义将如下所示

#include <iostream>
const char ( & ( f() ) )[6] { return ( "Hello" ); }
int main()
{
    std::cout << f() << std::endl;
}

或者作为@Jarod42建议,您可以使用 typedef,使定义看起来更简单

#include <iostream>
const char ( & ( f() ) )[6] { return ( "Hello" ); }
typedef const char ( &Array_Ref )[6];
Array_Ref g() { return ( "Hello" ); }
int main()
{
    std::cout << f() << std::endl;
    std::cout << g() << std::endl;
    Array_Ref s = g();
    std::cout << s << std::endl;    
}

如果你想使用 std::string,那么最好将函数写为

std::string f() { return ( "Hello" ); }