您的位置:首页 > 其它

C指针

2016-01-01 01:07 197 查看
非原创,感觉作者写的很有意思,特拿来记录一番。

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: