关于指向指针的指针的联想

被刻印的时光 ゝ 提交于 2019-12-05 15:18:01
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就是一个指向一个指向整型变量的指针的指针变量。
 
 
--------------------------------------------
 
 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!