指向指针的指针,意思就是说这个指针必须指向一个指针类型的地址,因为指针是一个变量,因此指针也有自已的地址。比如int **p, *p1; int n=4; 那么正确的语法应该是p1=&n; p=&p1; 注意第二句,应该把指针p1的地址赋给p,你可以看到p1的地址&p1与p1的值p1是不相同的,p1的值等于的是n的地址,而&p1的地址是指针变量的地址。
int **p; 赋值就省了,我们来看p[0]表示的是什么,在C中[]数组运算符的功用是把指针所指向的地址偏移[]括号内的数值,然后再求值(也就是使用指针运算符),因此p[0]表示的是就是*(p+0);而p[1]也就是*(p+1); 而p是一个指向指针的指针,因此p的值也就是上面列举的p1的地址,你使用p1的地址再加上1,那么得到的结果是什么?这是不可预料的,因此使用p[]这样的语法会出问题。