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

时间:2014-01-10 13:31:53

标签: c++ c arrays pointers reference

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

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

我想知道如何使用reference代替pointer

我有一个想法,使用string

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

更新:

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

1 个答案:

答案 0 :(得分:2)

如果您想知道语法,那么定义将采用以下方式

#include <iostream>

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

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

或者作为@ 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,最好把函数写成

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