int ** 的理解

int **p;
int * p, 比较容易理解,就是定义一个指向int类型的指针。那么这里的int **p是什么呢?
对于这种特殊形式,首先可以确定的是p是一个指针,因为p前面不但有 * 号而且还有两个 * 号,所以肯定是指针。
那么两个 * 号又是什么意思呢?
把int **p分解为以下形式,和int *p比较,就会看的比较清楚

int           * p; //指针p指向 int类型
int * * p;//指针p指向int * 类型

其实上面的两种形式区别就在于:指针指向的内容的类型不同,一个指向int类型一个指向int * 类型

int a = 10;
int *q;
int **p;q = &a;//q 指向 a
p =&q; //p 指向q, q是一个int类型指针

该程序段执行完毕后内存映像如下:

int ** 的理解_.net