先考虑下面这些声明:
int a = 12;
int *b = &a;
c = &b;
那么c的类型是什么?
显然,它是一个指针。
但它所指向的是什么?
变量b是一个“指向整型的指针”,所以任何指向b的类型必须是“指向整型的指针”更通俗的说是指针指针的指针。
指针变量和其它变量一样,占据内存中某个特定位置,所以用&操作符取得它的地址是合法的。
那么指针的指针要怎么声明?
int **c;
表达式int **c的类型是int,下图示例有助于我们弄清这个概念:
int a = 12;
int *b = &a;
int **c = &b;
对int **c的一些分析:
操作符具有从又到左的结合性,所以这个表达式相当于(c)我们必须从里向外逐层求值。c访问c所指向的位置,我们知道这是指向变量b,
括号外的*间接访问操作符访问这个这个位置所指向的地址,也就是变量a。
END!