通常我们说指针就是内存中的地址,不同类型的指针代表相应类型变量的地址。而指针本身存放也需要地址,所以很显然我们同样可以定义指针的指针。下面就是一个指向整型变量的
指针和一个指向整型指针的指针:
以下输出了各变量的值:
由于数组名第一个元素的地址,那么本身即为地址的指针也可以表示数组。指针的指针可以表示二维数组。字符型指针可以表示字符串,指向字符型指针的指针可以表示字符串集合。
判断下面程序的输出:
注意程序第三句,指针p指向的对象通过其本身的指针q被修改了,所以最后输出为c。
从上面除了可以发现内存中栈按地址减小的方向增长外(为什么每次是12Bytes呢?),还可以看到每行的值都是相等的。ppi是指向整型指针pi的指针,所以ppi =πpi是指向整型变量i的整型指针,所以pi=&i。
在这里可以看到&(取地址操作符,address-of operator)和*(解引用操作符,dereference oprator)互为逆操作。如下所示: