2014-01-10 133 views
1

返回靜態字符數組現在我想編寫以下代碼的新版本:通過參考

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

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

我有一個想法,使用string

有沒有更直接的方法來解決這個問題?

UPDATE:

我讀答案和註釋小心。我得到另一個想法是將返回值視爲常量字符數組。但是這個解決方案似乎太複雜了,並不像指針那麼清晰。

+5

你想達到什麼目的? –

+0

你的意思是你想用字符串而不是char *並返回它的地址? –

+0

@LuchianGrigore只是想在指針和引用之間做一個清晰的映射。 – luoluo

回答

2

如果你想知道的語法,則定義會看看下面的方式

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

完成相同的目標(返回一個靜態字符串)我會使用'typedef' ...通過引用傳遞數組的語法不好,返回數組的語法是最差的... – Jarod42

+0

@ Jarod42我同意,但看看它至少有一次是很有用的。 –

+1

順便說一句,'f()'有一個多餘的圓括號:'const char(&f())[6]'就足夠了。 – Jarod42