指针的指针是多了一个间接的形式,或链指针。通常情况下,一个指针包含一个变量的地址。当我们定义一个指针的指针,首先指针包含了它指向包含实际值如下所示的位置第二个指针的地址。
一个变量,它是一个指针的指针必须声明为这样。它是通过将一个附加的星号在其名称前完成。例如,以下是声明来声明一个指向int类型的指针:
int **var;
当目标值被间接地通过一个指针的指针指向,访问该值要求的星号(*)运算符应用两次,如下面的例子所示:
#include <stdio.h> int main () { int var; int *ptr; int **pptr; var = 3000; /* take the address of var */ ptr = &var; /* take the address of ptr using address of operator & */ pptr = &ptr; /* take the value using pptr */ printf("Value of var = %d ", var ); printf("Value available at *ptr = %d ", *ptr ); printf("Value available at **pptr = %d ", **pptr); return 0; }
当上述代码被编译和执行时,它产生了以下结果:
Value of var = 3000 Value available at *ptr = 3000 Value available at **pptr = 3000