-1
A
回答
7
沒有。
但有
const char* name = "hello", something = "else";
這將無法正常工作之間的差異,而
const char *name = "hello", *something = "else";
應該
2
不,沒有區別,兩個聲明都是等價的。
注意,空調風格趨於聲明指針對象是這樣的:
T *a;
而C++風格趨於聲明指針對象是這樣的:
T* a;
0
它基本上是一個口味問題。
,因爲我要明確指出的類型是指針(一個char*
),但很多人認爲,更正確的是使用const char *name
表明是指向我個人使用const char* name
(輸入char
)
1
兩者都被解析爲const char (*name) = "name";
- *
被綁定到聲明器,而不是類型說明符。
C和C++中的聲明基於表達式的類型,而不是對象。如果你有一個指向某種類型的T
,並且您要訪問所指向的價值,你的尊重指針:
x = *p;
的類型表達*p
是T
,所以指針的聲明是
T *p;
在你的情況,name
指向一個char
值開頭的字符串文字。如果我們想要去的字符值'n'
,我們就喜歡寫東西
const char start = *name; // assigns 'n' to start
因此,表達是const char
的類型,所以我們通常寫聲明
const char *name;
因爲C聲明語法如何工作,圍繞*
令牌的空白無關緊要。你可以寫成:
const char *name;
const char* name;
const char * name;
或其他一些組合。我和其他許多人更喜歡第一種形式,因爲它準確地反映了聲明語法。還有其他人更喜歡第二種形式,即使它對語法有一些誤導性的看法,因爲它強調name
的類型。
任何聲稱喜歡第三種形式的人都是馴服或瘋狂的。
相關問題
- 1. 不能將'const char *'轉換爲'char * const *'
- 2. Const char * vs const wchar_t *(concatenation)
- 3. NSString爲char(不是const char)
- 4. 元帥爲const char **
- 5. 爲const char *成員
- 6. C++ char const char *
- 7. 爲const char *爲char *在我的情況
- 8. 轉換型「的char **」,以「爲const char **」
- 9. C++:爲const char * const的*的含義
- 10. 「警告:類型默認爲類型名稱‘詮釋’」聲明爲const char *
- 11. 在C++中將char *轉換爲const char *
- 12. 轉換無效從CHAR爲const char *
- 13. 將const char *轉換爲char *的問題
- 14. 如何將const char連接到const char?
- 15. 爲什麼MFC C++ CString(const char *)完全改變const char *值?
- 16. 解析爲const char * argv的[]
- 17. 指定NSData爲const char
- 18. 與指針爲const char []
- 19. 從`爲const char * '到'字符*'
- 20. 從`const char *'轉換爲`byte'
- 21. int轉換爲const char *
- 22. 轉換BSTR爲const char *
- 23. Const char *怪異行爲
- 24. 從「爲const char *」到「字符*」
- 25. 將NSString轉換爲const char *
- 26. 將const char *轉換爲int
- 27. fstream to const char *
- 28. Const Char to LPTSTR
- 29. const char * const和const char []之間有區別嗎?
- 30. const char * to LPTSTR
你能解釋一下那些有什麼區別? – user1334858 2013-02-26 20:06:58
const char * a =「hello」,something =「else」;這將聲明一個指向char類型的指針,並將其指定爲char。你可以通過做一個「typedef char * pchar」來解決這個問題,它允許:pchar a =「hello」,something =「else」; – Dmitry 2013-02-26 20:08:52