int *p;
分析一下几种看法;
1.(int *)p;这种的话可以把括号理解为一种变量的定义,定义了一个变量,它存储了一个整型变量的地址。
2.int (*p);定义一个指针,这个指针指向的是整型变量。
再来看看这个:
int **p;
1.(int *)(*p);
这个东西,你结合上面的东西来说的话,岂不是,括号讲的是变量的定义,定义一个变量,它是一个指向
整型变量的指针。右边括号,定义了一个指针,它指向的是 指向一个整型变量的指针。所以说这整个玩意儿,
讲的是,一个指针p,它储存了另一个指针的地址,它储存的这个指针是一个指向整型变量的指针。
2.(int **)p;
这第二种分的,把p当变量,左边的括号是变量定义。那么这个定义是啥意思呢?
好像可以这样理解:
*这个东西运算级别高,从右往左结合,然后*和*的级别相同,他俩之间就从左往右了,于是左边这个星号先和
int一结合,诶,就是说定义一个指向整型(整型处在第一个星号的左边是不,那就指向它)的指针,这还没完,
第二个星号出来了,左边结合完了,这时候它的左边是啥:(int *),所以第二个*指向的就是它,于是乎,变成了:
p这个变量呢,它是 指向 一个指向整型变量的指针的指针变量。
3.int (**p);
这第三种怎么讲呢,其实也和第二种相似。这和p离得近的*说,你这个p,是一个指针变量,指谁我不知道,爱咋咋地,
好了,接下来离得远的那个*也说了,小伙子,你这个p啊是一个指针变量,你指的也是一个指针,你指的类型清楚了,
是指针,嗯好,你指的那个指针,它指的啥,我不管;好啊,俩*号不说话了,int终于插上嘴了,诶,那个不知道指谁的
指针小伙子,你指我的小老弟,指一个整型变量呗;于是p就是一个指向一个指向整型变量的指针的指针变量。
--------------------------------------------
关于指向指针的指针的联想
原文:https://www.cnblogs.com/Bullet2YourHeart/p/11930462.html