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" ); }