C指针

非原创,感觉作者写的很有意思,特拿来记录一番。

int a,

int *a,

第一行代码:a是int型

第二行代码:*a是int型, a是int型指针

 

同理

int (*p)(int)

 (*p)(int) 是int型,后面带一个(int),则(*p)是函数,那么p是函数指针。

 

那么函数指针的指针呢?

int *(*p)(int)

 *(*p)(int)是int型,(*p)(int)是int的指针,(*p)是函数,p是函数指针。get√ 

//再变化一下=> int* (*p)(int) ,看出来没,(*p)(int) 是 int*型,(*p)是函数,p是函数指针。那么这是一个返回int指针的函数指针,所以这不是函数指针的指针。

 

int (**p)(int)

 (**p)(int)是int型,**p是函数,*p是函数指针,p是函数指针的指针。

 

----------

int *(*(*(*abc)())[6])()如何解读

*(*(*(*abc)())[6])()是int型,

(*(*(*abc)())[6])()是int指针,

(*(*(*abc)())[6])是函数,

(*(*abc)())[6]是函数指针,

(*(*abc)())是函数指针的数组,

(*abc)()是函数指针的数组的指针,

(*abc)是函数指针的数组的指针的函数,

abc是函数指针的数组的指针的函数指针!get√

 

------------

 

最好用typedef,这样会更容易看:
 
typedef int     func(int);  
typedef func*   pfunc;      
typedef pfunc*  ppfunc;    
 
ppfunc p;
 
理解typedef,typedef int  (* func)(int),意思是  func =  int (*xxx)(int)
 

 

 

 

 

posted @ 2016-01-01 01:07  sjdang  阅读(158)  评论(0编辑  收藏  举报