多级指针
很多人说多级指针是指向地址的指针,这个说法从中文的角度没毛病。可是真要较真,这话等于没说,因为很难理解。
下面给与解惑。
C语法规定:
1、对于一般的变量(包括指针类型的变量),前面加一个&就表示,获取该变量的地址。但有一个除外,就是数组。数组变量表示的是一个地址。
2、对于指针类型的变量,进行*操作,得到的是该变量保存的值作为地址,向上寻址,获取对应的值
3、对非指针类型的变量,不能做*操作。都到头了。
比如如下假设:
int A=10;
int* B =&A;
int** C=&B;
int*** D=&C;
多级指针
那么就会有下面的结果:
两张图表结合,你就明白是怎么回事了!
以变量D为例:
*D的操作,是一个去* 的操作,得到的数据类型就是一个int** 的。和C的类型相同
即:*D=C;
每做一次对指针变量*的操作,就是一次去 * 的操作。也就离真实获取的数据前进了一步。直到最后没*了。当int* 去星后,就变成int 类型的。也就获取到了最终想要的数据。
换句话说。无论有多少个星,最终我们其实要获取的是最后没有*的数据。也就是上图的10.