返回靜態字符數組現在我想編寫以下代碼的新版本:通過參考
const char * f() {
return "Hello";
}
const char *pf = f();
我不知道如何使用reference
而不是pointer
。
我有一個想法,使用string
。
有沒有更直接的方法來解決這個問題?
UPDATE:
我讀答案和註釋小心。我得到另一個想法是將返回值視爲常量字符數組。但是這個解決方案似乎太複雜了,並不像指針那麼清晰。
返回靜態字符數組現在我想編寫以下代碼的新版本:通過參考
const char * f() {
return "Hello";
}
const char *pf = f();
我不知道如何使用reference
而不是pointer
。
我有一個想法,使用string
。
有沒有更直接的方法來解決這個問題?
UPDATE:
我讀答案和註釋小心。我得到另一個想法是將返回值視爲常量字符數組。但是這個解決方案似乎太複雜了,並不像指針那麼清晰。
如果你想知道的語法,則定義會看看下面的方式
#include <iostream>
const char (& (f()))[6] { return ("Hello"); }
int main()
{
std::cout << f() << std::endl;
}
或者像@ Jarod42通知:您可以使用一個typedef的fiunction定義woild看起來簡單
#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"); }
你想達到什麼目的? –
你的意思是你想用字符串而不是char *並返回它的地址? –
@LuchianGrigore只是想在指針和引用之間做一個清晰的映射。 – luoluo