指针的指针是多了一个间接形式或链指针。通常情况下,一个指针包含一个变量的地址。当我们定义一个指针的指针,第一指针包含第二指针,它指向包含实际值如下所示的位置的地址。
一个变量,它是一个指针的指针必须声明为此类。这是通过将一个附加的星号在其名称前完成。例如,以下是声明来声明一个指向int类型的指针:
int **var;
当目标值被间接地通过一个指针的指针指向,访问该值要求的星号(*)运算符应用两次,如下面的例子所示:
#include <iostream> using namespace std; 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 cout << "Value of var :" << var << endl; cout << "Value available at *ptr :" << *ptr << endl; cout << "Value available at **pptr :" << **pptr << endl; return 0; }
当上述代码被编译和执行时,它产生了以下结果:
Value of var :3000 Value available at *ptr :3000 Value available at **pptr :3000