2016-05-01 67 views
-3

我被告知,將星號放在指針的位置並不重要。指針語法的區別

int* p; 
int *p; 

是一樣的。但一旦變得複雜,我會感到困惑。例如,您可以這樣做:

int (*(p)); 
int** (*(p)); 
int*** (*(p)) {}; 

這些聲明之間是否有區別?

+2

「不,你把星號的指針關係」的意思,「這不要緊,你是否沒有空格之前,之後,這兩者或不所有」。這並不意味着你可以隨意放置'*'的地方。 –

+0

你爲什麼要把所有'('和')'放在這樣的代碼中?你把這個和函數指針混合起來了嗎? – 4386427

+0

@ 4386427當然,在第二個片段的第一個和第二個聲明中沒有用括號,但在類似的類型周圍添加括號是合法的。雖然第三是語法錯誤。 –

回答

6

int (*(p));是指向int的指針。

int** (*(p));是指向指向int的指針的指針。

int*** (*(p)) {};是C.無效的語法