指针的指针

先考虑下面这些声明:

int a = 12;
int *b = &a;

假如又有第三个变量C,并对下面语句进行初始化:
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!

你可能感兴趣的:(指针的指针)