2013-02-26 155 views

回答

7

沒有。

但有

const char* name = "hello", something = "else"; 

這將無法正常工作之間的差異,而

const char *name = "hello", *something = "else"; 

應該

+0

你能解釋一下那些有什麼區別? – user1334858 2013-02-26 20:06:58

+0

const char * a =「hello」,something =「else」;這將聲明一個指向char類型的指針,並將其指定爲char。你可以通過做一個「typedef char * pchar」來解決這個問題,它允許:pchar a =「hello」,something =「else」; – Dmitry 2013-02-26 20:08:52

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; 

的類型表達*pT,所以指針的聲明是

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的類型。

任何聲稱喜歡第三種形式的人都是馴服或瘋狂的。