2016-05-01 65 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.无效的语法