指针变量可以指向另一个指针变量,这种操作并不是将一个指针变量所指向的内存地址传递给另一个指针变量,而是定义一种指向指针类型的指针变量,可将其称为双重指针。双重指针的定义形式为:
数据类型 **变量名;
其中使用 2 个 间接运算符,如下例所示:
int i, *pi, **dpi; // 声明整型变量 i、整型指针变量 pi 和 整型双重指针变量 dpi
pi = &i; // 将变量 i 的地址赋给整型指针变量 pi
dpi = π // 将整型指针变量 pi 的地址赋给整型双重指针变量 dpi
**dpi = 100; // 间接引用变量 i,给变量 i 赋值
printf("%d", i); // 输出变量 i 的值
代码中定义了双重指针变量 dpi,将双重指针变量指向指针变量是,必须使用 取地址运算符得到指针变量自身的内存地址。通过双重指针变量间接引用所指向的变量时,因首先要获取其所指向指针变量的地址,然后再要获得所指向指针变量中保存的内存地址,所以需要用 2 个取地址运算符完成这 两重运算。