int *(*p(int))[3]
今天有人問這個是啥?我一看直接就懵逼了……
下面做一些簡單的分析。
int p; //這是整數型變量p
int *p; //這是整數型指針p
int *p[3]; //這是長度為3的整數型指針數組p,元素為整數型指針
int (*p)[3]; //這是一個數組指針,指向一個長度為3的整數型數組
int p(int); //這是函數聲明,形參:整數型 ,返回值:整數型
等同於 int p(int x);
int *p(int); //這是函數聲明,形參:整數型 ,返回值:整數型指針
等同於 int *p(int x);
int (*p)(int); //這是函數指針,指向有一個整數型形參和整數型返回值的函數
int (*p[3])(int);//這是函數指針數組,每個元素指向有一個整數型形參和整數型返回值的函數
int *(*p(int)); //這是函數聲明,形參:整數型 ,返回值:指向整數型指針的指針
等同於 int **p(int) , int **p(int x) , int *(*p(int x))
int *(*p(int))[3]; //這是一個函數聲明,形參:整數型,返回值:一個數組指針數組,此數組內的指針,指向一個長度為3的整數型指針數組。
我知道這個很繞,簡單說返回值就是這樣: int *i[x][3]; //x是任意數
以上結論均在VisualStudio2010中進行測試,無誤。如果我有所疏漏,或者是有什么表達不清,請留言哦,么么噠(づ ̄ 3 ̄)づ。