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

C++ 使用引用返回静态字符数组,c++,c,arrays,pointers,reference,C++,C,Arrays,Pointers,Reference,现在,我想编写以下代码的新版本: const char * f() { return "Hello"; } const char *pf = f(); 我想知道如何使用引用而不是指针 通过使用字符串,我有一个想法 有没有更直接的方法来解决这个问题 更新: 我仔细阅读了答案和评论。我得到了另一个想法是将返回值视为常量字符数组。但是这个解决方案看起来太复杂,不像指针那么清晰。如果您想知道语法,那么定义将如下所示 #include <iostream> const char

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

const char * f() {
     return "Hello";
} 
const char *pf = f();
我想知道如何使用
引用
而不是
指针

通过使用
字符串
,我有一个想法

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

更新:


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

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

#include <iostream>

const char ( & ( f() ) )[6] { return ( "Hello" ); }

int main()
{
    std::cout << f() << std::endl;
}

你想达到什么目的?你的意思是你想用字符串而不是字符*来返回它的地址?@LuchianGrigore只是想在指针和引用之间建立一个清晰的映射。@MaximMakhun我的意思是用
string
来代替
char*
。@罗洛:什么?为什么?指针和引用将指向同一地址。我将使用
typedef
。。。通过引用传递数组的语法不好,返回数组的语法最差…@Jarod42我同意,但至少看一次数组的外观是很有用的。顺便说一句,
f()
const char(&f())[6]
足够了。@Jarod42是的,但是我认为这会使定义更加清晰。但是这怎么能像
指针那样赋值给某个变量呢?
#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 f() { return ( "Hello" ); }